C ++的哪个部分创建了许多"副本"对象?

时间:2017-05-30 06:41:54

标签: c++

虽然我主要开发C ++,但我并没有在那里得到关于C ++的笑话。关于传递值是默认行为,因此创建了许多副本这个笑话吗?或者是否有其他一些C ++创造了这种声誉?

enter image description here

1 个答案:

答案 0 :(得分:3)

与其他OO语言相比,C ++大量使用值语义。许多语言中的代码Object B = A;都会创建一个新引用,但不会创建新的Object。我们称之为引用语义。在这些语言中,您必须编写类似Object B = new Object(A)的内容来制作副本。但是对于价值语义,Object B = A;实际上是一个副本。

第二个原因是C ++不使用垃圾收集。这意味着您经常需要一个对象的副本,以保证其生命周期。 (今天我们有std::shared_ptr