background image

为实参。而引用更容易使用,更清晰。

4. 

在什么时候需要使用 常引用 ? 

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就
应使用常引用。常引用声明方式:const 

 

类型标识符 &引用名=目标变量名;

例 1

int a ;
const int &ra=a;
ra=1; //错误
a=1; //正确

例 2

string foo( );
void bar(string & s);

那么下面的表达式将是非法的:

bar(foo( ));
bar("hello world");

原因在于 foo( )和"hello world"串都会产生一个临时对象,而在 C++中,这些临时对象都是
const 类型的。因此上面的表达式就是试图将一个 const 类型的对象转换为非 const 类型,
这是非法的。

引用型参数应该在能被定义为 const 的情况下,尽量定义为 const 。

5. 

将 引用 作为函数返回值类型的格式、好处和需要遵守的规则?

 

格式:类型标识符 &函数名(形参列表及类型说明){ //

 

函数体 }

好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局
部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产
生 runtime error!

注意事项:

(1)不能返回局部变量的引用。这条可以参照 Effective C++[1]的 Item 31。主要原因是局部
变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入
未知状态。