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

源地址 http://onlywish.me

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

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

posted on 2014-12-27 19:20  onlywish  阅读(150)  评论(0编辑  收藏  举报

导航