3-1-7. thisポインタ

公開日: 14:36 3. オブジェクト指向編/3-1. クラスとオブジェクト/3-1-7. thisポインタ

C++のすべてのオブジェクトはthisポインタを通して自身のアドレスへのアクセス手段を持ちます。 

フレンド関数はクラスのメンバではないのでthisポインタを持ちません。メンバ関数のみがthisポインタを持ちます。

thisポインタのコンセプトを理解するために次の例を見てみましょう。
#include <iostream>
 
using namespace std;

class Box
{
   public:
      // コンストラクタ
      Box(double l=2.0, double b=2.0, double h=2.0)
      {
         cout <<"コンストラクタの呼び出し" << 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;     // boxの縦幅
      double breadth;    // boxの横幅
      double height;     // boxの深さ
};

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

   if( Box1.compare ( Box2 ) )
   {
      cout << "Box2はBox1より小さい" <<endl;
   }
   else
   {
      cout << "Box2はBox1と等しいかより大きい" <<endl;
   }
   return 0;
}

上のコードをコンパイルし実行すると、次の結果が得られます。
コンストラクタの呼び出し
コンストラクタの呼び出し
Box2はBox1と等しいかより大きい
  • ?±??G???g???[?d????u?b?N?}?[?N???A

0 件のコメント :

コメントを投稿