【发布时间】:2015-02-28 13:22:03
【问题描述】:
在 C++ 中考虑这两种情况,
- 通过引用返回对象。
- 按原样返回对象。
在上述哪种情况下进行了深度复制,为什么?
提前致谢。
【问题讨论】:
-
返回引用不会复制。返回对象使用其复制构造函数。是否进行深拷贝取决于它的编写方式。
-
这些方法本质上都不是深度复制。如果类有一个适当的复制构造函数来进行实际的深度复制,则按值返回可以进行深度复制。
-
@Barmar 取决于什么?你能举个例子吗,或者你能指导我应该读什么来更好地理解吗?
-
这取决于复制构造函数和赋值运算符是复制它所指向的所有对象还是只复制指针。
-
如果您了解什么是深度复制,那么它所依赖的内容应该很明显了。所以也许你需要回到书本上去研究这个概念。