I'm currently refreshing my C++ skills and was wondering if it is possible to assign something to *this
.
I know assigning to this
is forbidden, but can't find the same information for my case.
An example:
class Foo {
int x;
public:
Foo(int x) : x(x) {}
Foo incr() { return Foo(x+1); }
void incr_() { (*this) = incr(); }
};
Edit: corrected incr()
's return type from void
to Foo
.
Yes, it is allowed, and it actually invokes your class' assignment operator.
void incr() { return Foo(x+1); }
This is invalid. You cannot return a Foo
object from a function having void
return type.
void incr_() {
(*this) = incr(); // This invokes Foo& operator = (const Foo& ) (compiler synthesized)
}
This is fine.
Yes, it works. And *this = x
is just syntactic sugar for operator=(x)
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With