【问题标题】:Can I delete object itself and reallocate it?我可以删除对象本身并重新分配它吗?
【发布时间】:2019-07-07 09:11:57
【问题描述】:

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

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

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

它说 [Error] lvalue required as left operand of assignment。 重新分配自己是不可能的吗?如果是,那是为什么?

【问题讨论】:

标签: c++ constructor copy this


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    相关资源
    最近更新 更多