Latest web development tutorials

C ++ come il valore di ritorno di riferimento

C ++ riferimenti C ++ riferimenti

Utilizzando i riferimenti al posto dei puntatori, C ++ rende i programmi più facili da leggere e mantenere. funzione C ++ può restituire un riferimento, e restituisce un puntatore a una maniera simile.

Quando la funzione restituisce un riferimento, restituisce un puntatore al valore di rendimento implicito. Così, la funzione può essere posizionato sul lato sinistro di un'istruzione di assegnazione. Ad esempio, si consideri la seguente procedura semplice:

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

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

改变前的值
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

Quando si restituisce un riferimento, prestare attenzione all'oggetto di riferimento non può andare fuori portata. Esso restituisce un riferimento a una variabile locale non è legale, tuttavia, è possibile restituire un riferimento a una variabile statica.

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

C ++ riferimenti C ++ riferimenti