首页 > 代码库 > 【C++】C++引用返回值需谨慎
【C++】C++引用返回值需谨慎
源地址 http://onlywish.me
引用不像指针那么复杂,又不拷贝空间,一直比较喜欢它。
于是深入探究C++引用的问题
殊不知,不知道引用返回值的使用方式有很大的风险
基础:
当对象进行值传递时。会调用类的拷贝构造函,常见的,函数形参。=号赋值。
我进行了如下的实验:
有一个函数 定义如下:
A & func();
返回一个类的引用
原来,我都是这样调用的。 A a = func();我相信大部分人都是这么调用
经过实验发现,这样会调用一次拷贝构造函数
其实是把返回值返回了一个引用到栈里边,然后变量a又拿栈里边的对象复制了一次
所以,以后调用引用函数时,要这样调用 A & a = func();
假如要给别人写类包,尽量避免引用返回,因为错误的调用会导至堆内存的数据无法释放。
【C++】C++引用返回值需谨慎
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。