【发布时间】: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。 重新分配自己是不可能的吗?如果是,那是为什么?
【问题讨论】:
-
this是纯右值,因此不能为其赋值。这与尝试执行0 = 10;相同。 -
我认为你可以显式调用析构函数,而不是做一个新的放置,也就是说,这样的行为让你的调用者感到惊讶并不是一个好主意
-
仅供参考,如果你想这样做,一些非标准的优化不能工作,例如:clang.llvm.org/docs/…
标签: c++ constructor copy this