首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教成员函数返回类型为引用类型有什么作用

2012-02-07 
请问成员函数返回类型为引用类型有什么作用?比如template typenameTT&Data(){returndata}书上说是为了

请问成员函数返回类型为引用类型有什么作用?
比如   template <typename   T>
          T&Data(){return   data;}
书上说是为了使函数调用表达式能作为左值,我不太明白,请指点!最好能给出例子说明!谢谢各位!

[解决办法]
成为左值可以这样写:
Data() = data1;
当然,并不是说提倡你这样写。

还有,返回引用不仅仅是成为左值,而且可以直接代表被返回的那个东西,假如返回的不是引用,那么当你调用:
Data().f();
时,实际上f不是在原来那个对象上调用的,而是在新的临时对象上调用的,这有时候并不能满足需求。(原因就是当你不返回引用的时候,函数返回的结果并不是return表达式后边的那个对象,而是它的拷贝)

举例来说,标准库vector的operator[]返回的就是引用,所以当你调用:
vector <string> v;
……
v[0].clear();
时,你清空的就是vector当中保存的那个string对象,而不是一个operator[]返回后保存在临时变量中的一个新的string对象。

另外,即便你返回的是不能被修改的常量引用(const reference),也至少有另外一个好处:效率高。这一点跟通过常量引用传递函数参数是一样的。

热点排行
Bad Request.