Within a member function of a class, the keyword this is a pointer to the instance of the class on which the function was called. this cannot be used in a static member function.
struct S {
int x;
S& operator=(const S& other) {
x = other.x;
// return a reference to the object being assigned to
return *this;
}
};
The type of this depends on the cv-qualification of the member function: if X::f is const, then the type of this within f is const X*, so this cannot be used to modify non-static data members from within a const member function. Likewise, this inherits volatile qualification from the function it appears in.
this can also be used in a brace-or-equal-initializer for a non-static data member.
struct S;
struct T {
T(const S* s);
// ...
};
struct S {
// ...
T t{this};
};
this is an rvalue, so it cannot be assigned to.