C ++ este Ponteiro

Cada objeto em C ++ tem acesso a seu próprio endereço por meio de um ponteiro importante chamado thisponteiro. othisponteiro é um parâmetro implícito para todas as funções-membro. Portanto, dentro de uma função de membro, pode ser usado para se referir ao objeto de chamada.

As funções de amigo não têm um thisponteiro, porque amigos não são membros de uma classe. Apenas funções de membro têm umthis ponteiro.

Vamos tentar o exemplo a seguir para entender o conceito deste ponteiro -

#include <iostream>
 
using namespace std;

class Box {
   public:
      // Constructor definition
      Box(double l = 2.0, double b = 2.0, double h = 2.0) {
         cout <<"Constructor called." << endl;
         length = l;
         breadth = b;
         height = h;
      }
      double Volume() {
         return length * breadth * height;
      }
      int compare(Box box) {
         return this->Volume() > box.Volume();
      }
      
   private:
      double length;     // Length of a box
      double breadth;    // Breadth of a box
      double height;     // Height of a box
};

int main(void) {
   Box Box1(3.3, 1.2, 1.5);    // Declare box1
   Box Box2(8.5, 6.0, 2.0);    // Declare box2

   if(Box1.compare(Box2)) {
      cout << "Box2 is smaller than Box1" <<endl;
   } else {
      cout << "Box2 is equal to or larger than Box1" <<endl;
   }
   
   return 0;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Constructor called.
Constructor called.
Box2 is equal to or larger than Box1