Cplusplus-cpp-this-pointer

提供:Dev Guides
移動先:案内検索

C ++このポインター

C ++のすべてのオブジェクトは、 this ポインターと呼ばれる重要なポインターを介して独自のアドレスにアクセスできます。 this ポインターは、すべてのメンバー関数への暗黙的なパラメーターです。 したがって、メンバー関数の内部では、これを使用して呼び出し元オブジェクトを参照できます。

友達はクラスのメンバーではないため、友達関数には this ポインターがありません。 メンバー関数のみに this ポインターがあります。

このポインタの概念を理解するために次の例を試してみましょう-

#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;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

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