C++でのクラスの実装の仕方
  1. 1つのクラスは2つのソース classA.H と、classA.C で実装する(事が多い)。
    (ファイル名は、classA.hh と classA.cxx など、好きずきです)

  2. 基本的にクラス定義は、classA.H に書き、メソッド(実装)を classA.C に書く

  3. クラス定義ファイル classA.H は、何度も include されるので、 多重インクルード防止が必要
         
    // --------------------------------------------------------------------------
    // classA.H の例       
    // --------------------------------------------------------------------------
    // の後にはコメントを書ける
    /* これもコメント */
    #ifndef __CLASSA_H  // 多重インクルード防止
    #define __CLASSA_H
    class ClassA  // クラス宣言
    {
    private:      // インスタンス変数 (データメンバ) : 通常は公開しない
      int  Dat;
    public:       // 公開メソッド
      void  set(int d){Dat=d;}
      int   get(){return Dat;}
      void  crt();
    public:  
      ClassA();   // コンストラクタと呼ばれている
      ~ClassA();  // デストラクタと呼ばれている
      // ※ Java言語と違い、main() ルーチンはクラス内には無い
    };   // 最期はかならず ; を付ける
    #endif
         
         
  4. classA.C は、classA.H を include する
         
    // --------------------------------------------------------------------------
    // classA.C には、ClassA の実装を書く
    // --------------------------------------------------------------------------
    #include <stdio.h>
    #include <iostream.h>
    #include "classA.H"  // クラスの定義ファイル
    // --------------------------------------------------------------------------
    ClassA::ClassA()   // コンストラクタ
    {
      // コンストラクタはクラスオブジェクトが生成された時に実行される
      Dat = 0;   // Dat の初期化
    }
    // --------------------------------------------------------------------------
    ClassA::~ClassA()   // デストラクタ
    {
      // クラスオブジェクトがデリートされた時に実行される
      // 特に何もしなくとも良い
    }
    // --------------------------------------------------------------------------
    void ClassA::crt() // その他のメソッドも実装する
    {
      cout << "Dat = " << Dat << endl;
    }
         
         
  5. クラスは、型名であり、実体やポインタで利用する
         
    // --------------------------------------------------------------------------
    // ClassA の利用例
    // --------------------------------------------------------------------------
    #include "classA.H"
    main()
    {
      ClassA A;  // オブジェクトの実体を作成 (コンストラクタが実行される)
    
      A.crt();   // Dat = 0 と出力される
      A.set(5);  // Dat に 5 が入る
      A.crt();   // Dat = 5 と出力される
    
      // C++ の場合は、C と違い宣言文を実行文のあとにも置ける
    
      ClassA *B;      // オブジェクトのポインタを作成
      B = new ClassA; // ここでコンストラクタが実行される (Datに0が入る)
      B->crt();       // Dat = 0 と出力される
      B->set(3);      // Dat に 3 が入る
      B->crt();       // Dat = 3 と出力される
      delete B;       // ここでデストラクタが実行される
    
      return 0; // 最期にリターン値を返す 通常は exit() 文は使わない
    }
    // main()ルーチンを抜ける時に Aのデストラクタが実行される