【发布时间】:2020-02-10 21:00:01
【问题描述】:
返回类型当然会不同,但概念是一样的:将数据从一个对象复制到另一个对象,对吧?
【问题讨论】:
-
不同之处在于赋值运算符可以假设被赋值的对象已经初始化,并且必须正确清理它,而复制构造函数不能假设正在构造的对象已经初始化,因此不需要清理。实际上,通常最好根据另一个来实现一个,而不是在两者中复制相同的代码。例如,使用复制构造函数实现赋值运算符。
-
不一样,但可能有帮助:stackoverflow.com/questions/17480396/…
-
@Yksisarvinen 我想说考虑复制和交换成语是个好主意。它并不总是最佳解决方案。例如,对于向量,C&S 总是会分配新的内存,如果 assigned-to 向量的容量 小于或等于 assigned-from 向量的大小。字符串也是如此。
-
@DanielLangr 你是对的。您的示例将是一个很好的答案,作为对 OP 声明这两个操作相同的反证。
标签: c++ operator-overloading copy-constructor assignment-operator