现在的位置: 首页 > 综合 > 正文

C++中的引用

2014年11月23日 ⁄ 综合 ⁄ 共 442字 ⁄ 字号 评论关闭

C++中的引用:

 

1. 引用作为返回值:

C++中没有高效率的对象返回,所以返回值一定不要是一个直接的对象,除非是 return new A();,这种模式好象在vc++中专门做过优化的.
当返回一个变量时,会产生拷贝。当返回一个引用时,不会发生拷贝,你可以将引用看作是一个变量的别名,就是其他的名字,引用和被引用的变量其实是一个东西,只是有了两个名字而已。
问题的关键是,当你想要返回一个引用而不是一个拷贝时,你要确保这个引用的有效性,比如:
int & fun() { int a; a=10; return a; }
这样是不行的,因为a会在fun退出时被销毁,这时返回的a的引用是无效的。
这种情况下,如果fun的返回类型不是int & 而是int就没有问题了。
因此,要返回一个引用时,“临时变量”不能是“临时”的,至少得等函数外部使用完毕这个引用之后,才能销毁它。



A a(){...;return *this;}会调用拷贝构造函数和析构函数.
A& a(){...;return *this;}不会调用拷贝构造函数和析构函数.

【上篇】
【下篇】

抱歉!评论已关闭.