Object Class を継承する

C++/CLI で GCM Class を継承して LCM Class を定義します。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. GCM Class を継承(inheritance)して LCM Class を作成します。
    インヘリタンス(inheritance)とは、「相続」「継承」「相続財産」「継承物」などという意味の英語です。
    「メンバオブジェクトを定義する」より「オブジェクトを継承する」方が一般的で良く使われます。
  2. 継承元の GCM Object Class です。
    メンバオブジェクトを定義する と全く同じです。
    #include <iostream>
    using namespace std;
    
    class  GCM
    {
      private:
        int     wk,val;
    
      public:
        GCM(int v1, int v2)
        {   cout << "GCM Constructor の開始\n";
            wk= v1;
            val= v2;
            while(wk!=val)
            {   if (wk>val) wk-= val;
                else        val-= wk;
            }
        }
        ~GCM()
        {   cout << "GCM Destructor の開始\n";
        }
    
        int GetGcm()
        {
            return val;
        }
    };
    
  3. GCM Object Class を継承した LCM Object Class です。
    「: public GCM」で GCM Class を継承します。
    class LCM : public GCM
    LCM のコンストラクタから GCM のコンストラクタを呼び出します。
    LCM(int v1, int v2) : GCM(v1, v2)
    GCM Class の GetGcm() 関数を呼び出します。
    GetGcm()
    class  LCM : public GCM
    {
      private:
        int     val;
      public:
        LCM(int v1, int v2) : GCM(v1, v2)
        {   cout << "LCM Constructor の開始\n";
            val= v1*v2/GetGcm();
        }
        ~LCM()
        {   cout << "LCM Destructor の開始\n";
        }
    
        int GetLcm()
        {
            return val;
        }
    };
    
  4. LCM Object Class のポインタをグローバル領域に定義しています。
    new で LCM Object Class を生成(インスタンス化)します。
    new で生成した Object Class は delete で開放して下さい。
    LCM     *Lcmcls;
    
    int main()
    {
        cout << "main() の開始\n";
        Lcmcls = new LCM(24,32);
        cout << "GCM(24,32) は " << Lcmcls->GetGcm() <<
             " で、 LCM(24,32) は " << Lcmcls->GetLcm() << " です\n";
        delete  Lcmcls;
        cout << "main() の終了\n";
        return 0;
    }
    
  5. クラスの継承は class を継承します のページも合わせて参照して下さい。
    クラスを継承したプログラムの例は、次のページを参照して下さい。
    GSPRITE Class を継承して美人のアニメーション
    同心円状に広がるように弾を一斉に発射

超初心者のプログラム入門(C/C++)