Latest web development tutorials

C ++ como el valor de retorno de la referencia

referencias C ++ referencias C ++

Mediante el uso de referencias en lugar de punteros, C ++ hace que los programas más fácil de leer y mantener. función C ++ puede devolver una referencia, y devuelve un puntero a una manera similar.

Cuando la función devuelve una referencia, devuelve un puntero al valor de retorno implícito. Así, la función se puede colocar en el lado izquierdo de una instrucción de asignación. Por ejemplo, consideremos el siguiente procedimiento simple:

#include <iostream>
#include <ctime>
 
using namespace std;
 
double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0};
 
double& setValues( int i )
{
  return vals[i];   // 返回第 i 个元素的引用
}
 
// 要调用上面定义函数的主函数
int main ()
{
 
   cout << "改变前的值" << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "vals[" << i << "] = ";
       cout << vals[i] << endl;
   }
 
   setValues(1) = 20.23; // 改变第 2 个元素
   setValues(3) = 70.8;  // 改变第 4 个元素
 
   cout << "改变后的值" << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "vals[" << i << "] = ";
       cout << vals[i] << endl;
   }
   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

改变前的值
vals[0] = 10.1
vals[1] = 12.6
vals[2] = 33.1
vals[3] = 24.1
vals[4] = 50
改变后的值
vals[0] = 10.1
vals[1] = 20.23
vals[2] = 33.1
vals[3] = 70.8
vals[4] = 50

Al devolver una referencia, prestar atención al objeto referenciado no puede salir de su ámbito. Devuelve una referencia a una variable local no es legal, sin embargo, puede devolver una referencia a una variable estática.

int& func() {
   int q;
   //! return q; // 在编译时发生错误
   static int x;
   return x;     // 安全,x 在函数作用域外依然是有效的
}

referencias C ++ referencias C ++