Gau*_*ier 5 c++ vector copy-constructor copy-assignment
我的课A
显式实现了它的复制构造函数和复制赋值。
当复制分配此类元素的向量时,使用哪种复制机制?
这是:
vector<A> a1, a2(5);
a1 = a2;
Run Code Online (Sandbox Code Playgroud)
是否要对A
的所有新元素使用 的复制构造函数a1
,并将 的元素a2
作为输入?
a1
或者它会为元素腾出空间,然后使用A
'operator=
和 的 元素a2
作为输入?
a1
如果赋值前不为空怎么办?
还指定了吗?
我的类的复制构造函数并operator=
没有完全执行相同的操作(这是不好的做法吗?到目前为止主要是测试内容)。看起来复制构造函数被调用了,但我想知道是否一定会这样,或者在这种情况下是否恰好如此。
在此上下文中,它将调用复制构造函数 5 次。由于a1
为空,因此没有任何要分配的元素。所以它们需要被复制构建。
一般来说,它会调用任何适当的复制/移动构造/分配或删除的组合。一切都取决于相关向量的大小、您正在执行的特定向量运算以及操作数的值类别。