3-1-8. クラスへのポインタ

公開日: 15:01 3. オブジェクト指向編/3-1. クラスとオブジェクト/3-1-8. クラスへのポインタ

C++クラスへのポインタは構造体へのポインタと全く同じ手段で行われ、メンバにアクセスするにはメンバアクセス演算子->(アロー演算子)を使います。また、他のポインタと同様に、ポインタを使う前に初期化する必要があります。

クラスへのポインタのコンセプトを理解するために次のプログラムを試してみましょ う。
#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;
      }
   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の宣言
   Box *ptrBox;                // クラスへのポインタ

   // オブジェクトの先頭のアドレスを保存
   ptrBox = &Box1;

   // メンバアクセス演算子を使ってメンバへアクセス
   cout << "Box1の体積: " << ptrBox->Volume() << endl;

   // Box1と同様に
   ptrBox = &Box2;
   cout << "Box2の体積: " << ptrBox->Volume() << endl;
  
   return 0;
}
上のコードをコンパイルし実行すると、次の結果が得られます。
コンストラクタの呼び出し
コンストラクタの呼び出し
Volume of Box1: 5.94
Volume of Box2: 102
  • ?±??G???g???[?d????u?b?N?}?[?N???A

0 件のコメント :

コメントを投稿