Devolver por referencia en C++ con ejemplos

Los punteros y las referencias en C++ tenían una estrecha relación entre sí. La principal diferencia es que los punteros se pueden operar como agregar valores, mientras que las referencias son solo un alias para otra variable.

  • Las funciones en C++ pueden devolver una referencia ya que devuelve un puntero .
  • Cuando la función devuelve una referencia , significa que devuelve un puntero implícito .

La devolución por referencia es muy diferente a la llamada por referencia . Las funciones desempeñan un papel muy importante cuando se devuelven variables o punteros como referencia.

Vea esta firma de función de Return by Reference a continuación:

tipo de datos y nombre de función (parámetros);
donde,
dataType es el tipo de retorno de la función
y los parámetros son los argumentos que se le pasan .

A continuación se muestra el código para ilustrar la devolución por referencia:

CPP

// C++ program to illustrate return by reference
#include <iostream>
using namespace std;
  
// Function to return as return by reference
int& returnValue(int& x)
{
  
    // Print the address
    cout << "x = " << x
         << " The address of x is "
         << &x << endl;
  
    // Return reference
    return x;
}
  
// Driver Code
int main()
{
    int a = 20;
    int& b = returnValue(a);
  
    // Print a and its address
    cout << "a = " << a
         << " The address of a is "
         << &a << endl;
  
    // Print b and its address
    cout << "b = " << b
         << " The address of b is "
         << &b << endl;
  
    // We can also change the value of
    // 'a' by using the address returned
    // by returnValue function
  
    // Since the function returns an alias
    // of x, which is itself an alias of a,
    // we can update the value of a
    returnValue(a) = 13;
  
    // The above expression assigns the
    // value to the returned alias as 3.
    cout << "a = " << a
         << " The address of a is "
         << &a << endl;
    return 0;
}
Producción:

x = 20 The address of x is 0x7fff3025711c
a = 20 The address of a is 0x7fff3025711c
b = 20 The address of b is 0x7fff3025711c
x = 20 The address of x is 0x7fff3025711c
a = 13 The address of a is 0x7fff3025711c

Explicación:

Dado que la referencia no es más que un alias (sinónimo) de otra variable, la dirección de a , byx nunca cambia .

Nota: nunca debemos devolver una variable local como referencia , ya que tan pronto como las funciones regresen, la variable local se borrará , sin embargo, aún nos quedará una referencia que podría ser un error de seguridad en el código.

A continuación se muestra el código para ilustrar la devolución por referencia:

C++

// C++ program to illustrate return
// by reference
#include <iostream>
using namespace std;
  
// Global variable
int x;
  
// Function returns as a return
// by reference
int& retByRef()
{
    return x;
}
  
// Driver Code
int main()
{
    // Function Call for return
    // by reference
    retByRef() = 10;
  
    // Print X
    cout << x;
    return 0;
}
Producción:

10

Explicación:
el tipo de retorno de la función anterior retByRef() es una referencia de la variable x , por lo que se asignará el valor 10 a la x.

Publicación traducida automáticamente

Artículo escrito por ayush0x00 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *