码迷,mamicode.com
首页 > 编程语言 > 详细

【C++】C++引用返回值需谨慎

时间:2014-12-27 20:21:50      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

源地址 http://onlywish.me

 引用不像指针那么复杂,又不拷贝空间,一直比较喜欢它。

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

【C++】C++引用返回值需谨慎

标签:

原文地址:http://www.cnblogs.com/onlywish/p/4189033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!