我可以重新分配对象本身吗?
最近我研究了复制构造函数,并对删除'this'并重新分配它感到好奇。
obj(const obj &s) {
if(this != NULL)
delete this;
this = new obj();
}
它说[Error]左值是分配的左操作数。 重新分配自己是不可能的吗?如果是这样,那为什么呢?
答案 0 :(得分:2)
delete
运算符仅适用于使用运算符new
分配的对象,否则行为未定义。
一旦完成delete this;
,就不应访问任何成员。如果被访问,将导致异常并导致崩溃。
但是您不能分配给this
指针。 this
是一个 prvalue 表达式,其值是为其调用该函数的对象的地址。