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; }
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; }
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.