是否可以分配给解除引用的这个(* this)?

时间:2010-10-15 17:15:39

标签: c++

我目前正在刷新我的C ++技能,并想知道是否可以为*this分配内容。 我知道分配给this是被禁止的,但找不到与我案件相同的信息。

一个例子:

class Foo {
  int x;
public:
  Foo(int x) : x(x) {}
  Foo incr() { return Foo(x+1); }
  void incr_() { (*this) = incr(); }
};

修改:更正了incr()voidFoo的返回类型。

4 个答案:

答案 0 :(得分:4)

是的,它是允许的,它实际上会调用你的类的赋值运算符。

答案 1 :(得分:2)

void incr() { return Foo(x+1); }

这是无效的。您无法从具有Foo返回类型的函数返回void对象。

void incr_() { 

   (*this) = incr(); // This invokes Foo& operator = (const Foo& ) (compiler synthesized)
}

这很好。

答案 2 :(得分:1)

是的,它有效。而*this = x只是operator=(x)的语法糖。

答案 3 :(得分:0)

是的,如果*this返回值是指定了赋值运算符的数据类型,则可以。