【发布时间】:2013-08-16 03:45:14
【问题描述】:
class C{
//methods and properties
}
void C::some_method(C* b){
delete this;
this = b;
}
编译时出现以下错误:
error: lvalue required as left operand of assignment
我的意图:
假设有 C 类的对象 a 和 b。C 类的内容可能非常庞大,逐个字段的复制可能非常昂贵。我希望以经济的方式将“a”的所有内容替换为“b”。
默认的复制构造函数会完成预期的任务吗?
我发现了一个叫做“移动构造函数”的东西 http://akrzemi1.wordpress.com/2011/08/11/move-constructor/
也许,它可能会得到我想要的效果。
【问题讨论】:
-
你确定你可以做这样的事情吗??
-
确实如此。您刚刚发现
this不可重新分配,因为这没有任何意义。你有问题吗? -
this无法更改。您要实现的更高层次的目标是什么? -
你到底为什么要这么做?你想要完成什么?。交换两个对象?。
-
@Kevin 你是对的。我想将 b 中的任何内容复制到当前对象。