What is the "this" pointer in C++?

The this pointer in C++ points to the object that invokes the member function. This keyword is only accessible within the nonstatic member functions of a class/struct/union type.

There are many ways to use the this pointer.


Same class variable and parameter names

When the parameter name is the same as the private variable’s name, we use the this keyword inside the method to distinguish between the two when assigning values.

class ClassName
{
  private:
    int sameName;
  public:
   ClassName functionName(int sameName)
  {
    this->sameName = sameName; 
 //the variable used with "this", is the class variable
  }

Returning the current object

We can also use this to return the reference to the calling object.

ClassName& functionName()
{
   //code 
   return *this; //returns the reference to the object
}

this in constructors

A this pointer is always passed to the constructor. It holds the object’s address that is being constructed during that call.

Code

class Age
{
private:
int a;
public:
Age(int a = 0){
cout << "Address of object = " << this << endl;
this->a = a;
}
Age& setAge(int x){
cout << "Address of object = " << this << endl;
a = x;
return *this; //returns the current object
}
void getAge(){
cout << "Address of object = " << this << endl;
cout << "The age is " << a << endl;
}
};
int main() {
Age obj;
//we don't need to explicitly call getAge() now, we can call it on the returned object.
obj.setAge(20).getAge(); //(function chaining)
return 0;
}
Copyright ©2024 Educative, Inc. All rights reserved