我有代码:
T x,y;
T* t = new T[10];
t[0] = x;
t[0] = y;
发生了什么:
new T[10]
使数组调用默认构造函数。
t[0]
是取消引用的指针?
因此,如果我分配值 x
,则复制 x
(调用 T
复制构造函数);
下一步,如果我将 y
值分配给相同的位置,则调用下一个复制构造函数或赋值运算符?旧值是否被正确销毁?
最佳答案
在你的例子中:
T* t = new T[10];
调用 T 的默认构造函数(10 次)。然后
t[0] = x;
调用赋值运算符。此语句不调用构造函数。
关于c++ - 在数组中的相同位置赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9173819/