我可以删除对象本身并重新分配它吗?

时间:2019-07-07 09:11:57

标签: c++ constructor copy this

我可以重新分配对象本身吗?

最近我研究了复制构造函数,并对删除'this'并重新分配它感到好奇。

obj(const obj &s) {
    if(this != NULL)
        delete this;
    this = new obj();
}

它说[Error]左值是分配的左操作数。 重新分配自己是不可能的吗?如果是这样,那为什么呢?

1 个答案:

答案 0 :(得分:2)

delete运算符仅适用于使用运算符new分配的对象,否则行为未定义。

一旦完成delete this;,就不应访问任何成员。如果被访问,将导致异常并导致崩溃。

但是您不能分配给this指针。 this是一个 prvalue 表达式,其值是为其调用该函数的对象的地址。