【C++】C++引用返回值需谨慎
引用不像指针那么复杂,又不拷贝空间,一直比较喜欢它。
于是深入探究C++引用的问题
殊不知,不知道引用返回值的使用方式有很大的风险
基础:
当对象进行值传递时。会调用类的拷贝构造函,常见的,函数形参。=号赋值。
我进行了如下的实验:
有一个函数 定义如下:
A & func();
返回一个类的引用
原来,我都是这样调用的。 A a = func();我相信大部分人都是这么调用
经过实验发现,这样会调用一次拷贝构造函数
其实是把返回值返回了一个引用到栈里边,然后变量a又拿栈里边的对象复制了一次
所以,以后调用引用函数时,要这样调用 A & a = func();
假如要给别人写类包,尽量避免引用返回,因为错误的调用会导至堆内存的数据无法释放。