【发布时间】:2018-12-26 14:39:36
【问题描述】:
默认的复制构造函数在 C++ 中是做浅拷贝还是深拷贝?
我真的对 cpp 中的默认复制构造函数感到困惑,因为它会进行浅复制或深复制,就像我做 v2=v1; 假设 v1={1,2,3} 时一样,现在如果我已经完成 v2[0]=1; 它没有得到反映,但我听说是做浅拷贝的,谁能解释一下?
【问题讨论】:
-
请提供minimal reproducible example,我们不知道您的班级是什么样子
-
C++ 确实没有深拷贝或浅拷贝的概念,只有特定类的语义正确拷贝的概念。
-
@NeilButterworth 除非学术界介入。那么所有的赌注都没有了。
-
默认的拷贝构造函数拷贝变量的内容,不多也不少。如果你有一个拷贝构造函数,那么拷贝构造函数中的代码就会被执行。
标签: c++ deep-copy shallow-copy