Copy Constructor在C++被称为当对象是返回的一个功能?
-
21-08-2019 - |
题
我明白复制的构造是呼吁三个实例
- 当一个实例目和初始化与价值从另一个对象。
- 在经过一个目的是通过价值。
3.当一个物体是从一个功能价值。
我有个问题没有。3 如果复制的构造是所谓的对象时值返回,不应该创建的问题,如果对象是宣布本地的功能。
我的意思是复制的构造是一种深深的复制一项和需要参考的对象为参数
解决方案
这就是所谓完全避免的问题。一个新的对象服务作为的结果是初始化的局部定义的目的,则本地定义的目的是摧毁。
在情况下的深复制用户定义的构造它的所有相同。第一储存是分配对象,将作为的结果,那么复制构造。它使用通过参照访问本地定义对象和复什么是必要的新对象。
其他提示
在复制之前完成的所谓的功能退出,并将然后-当地现有的可变成本回报的价值。
在所谓的功能已经接入存储器的返回值将占据,即使记忆不是"范围"时,副本正在制作,它仍然可用。
根据 一个答案 我的问题,copy constructor 可以叫 甚至两次:一旦复制本地的对象到的回报"对象",并一旦复制的返回对象到的变量分配。
然而,它的 不需要 是!编译器可以优化这两个复制结构的距离。
没有,它要求在当地被摧毁。你可以测试这一目的,日志销毁和复制建设,或通过在产生大会的代码。
有三个一般的情况下复制的构造是称为:
- 当一个实例目和初始化与价值从另一个对象(同一类型)。
- 在经过一个目的是通过价值。
- 当一个物体是从一个功能价值。
不隶属于 StackOverflow