|
|
1
7
不,因为构造函数和析构函数都被调用了两次。因为你有这个:
当你构建一个
对于这个例子,不需要放置新的或显式的析构函数调用。 如果您分配了原始内存,那么新位置将非常有用。例如,如果您将新的更改为:
然后您将要放置新的和明确的析构函数调用。 |
|
|
2
1
不,这绝对不是一种远程安全的方法。当你这样做的时候
删除操作也存在同样的问题。
你想达到什么目的?只要做
同样,当你这样做的时候
它会自动调用每个函数的析构函数
|
|
|
3
0
--所以您的代码使用了两次new。这将调用构造函数两次。如果要避免这种情况,请执行以下操作之一: 把你的第一个新的变成malloc(或任何一种alloc) 删除第二个新位置
--所以你可以这样做: 如果使用新的[],请使用delete[]删除对象。 如果使用malloc和placement new,则调用每个析构函数并执行C样式的free |
|
|
4
0
注意,这不是异常安全的:如果一个构造函数导致异常,它不会对已经构造的对象调用析构函数,并且会泄漏内存。当一个析构函数抛出时,这也会失败。
看一看
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |