我目前正在刷新我的C ++技能,并想知道是否可以为*this
分配内容。
我知道分配给this
是被禁止的,但找不到与我案件相同的信息。
一个例子:
class Foo {
int x;
public:
Foo(int x) : x(x) {}
Foo incr() { return Foo(x+1); }
void incr_() { (*this) = incr(); }
};
修改:更正了incr()
从void
到Foo
的返回类型。
答案 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
返回值是指定了赋值运算符的数据类型,则可以。