Latest web development tutorials

C ++ в качестве возвращаемого значения ссылки

C ++ ссылки C ++ ссылки

При использовании ссылок вместо указателей, C ++ делает программы легче читать и поддерживать. Функция C ++ может возвращать ссылку, и возвращает указатель на аналогичным образом.

Когда функция возвращает ссылку, то она возвращает указатель на неявный возвращаемого значения. Таким образом, функция может быть размещена в левой части оператора присваивания. Например, рассмотрим следующую простую процедуру:

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

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

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

При возврате ссылки, обратите внимание на который ссылается объект не может выйти за рамки. Он возвращает ссылку на локальную переменную не является законным, однако, вы можете вернуть ссылку на статическую переменную.

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

C ++ ссылки C ++ ссылки