c – 改变一个对象的’this’指针来指向不同的对象

前端之家收集整理的这篇文章主要介绍了c – 改变一个对象的’this’指针来指向不同的对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
class C{
   //methods and properties
}

void C::some_method(C* b){
    delete this;
    this = b;     
}@H_403_3@ 
 

这在编译时给我以下错误

error: lvalue required as left operand of assignment@H_403_3@ 
 

我的意图:
说有C类的对象a和b,C类的内容可以是非常巨大的,而且通过字段的复制可能是非常昂贵的.我想要以一种经济的方式将“a”的所有内容替换为b.

默认的复制构造函数会执行预期的任务吗?

我发现一些叫做“移动构造函数
http://akrzemi1.wordpress.com/2011/08/11/move-constructor/

也许,这可能会得到我想要的效果.

解决方法

这个指针是一个隐含的指针,指向您正在工作的上下文对象,您无法重新分配该对象.

根据Stroustrup的圣经(C编程语言,第3版),这表示为

C * const this@H_403_3@ 
 

这意味着你有一个指向你的类C的指针,所以编译器会抱怨,如果你尝试改变它.

编辑:

当我被修正时,上述表达式并没有完全正确地描述这一点,因为这实际上是一个右值.

原文链接:https://www.f2er.com/c/115488.html

猜你在找的C&C++相关文章