C++-マルチステートとダミー関数

1537 ワード

かそうかんすう
  • クラスの定義では、virturalキーワードの前にあるメンバー関数を虚関数と呼ぶ.
  • class base{
          virtual int get();
    };
    int base::get(){}
    
  • virtualキーワードはクラス定義の関数宣言にのみ使用され、関数体を書くときは使用されません.
  • コンストラクション関数と静的メンバー関数は虚関数ではありません.

  • 多態の変現形式一
  • 派生クラスのポインタは、ベースクラスのポインタに付与することができる.
  • ベースクラスポインタを使用してベースクラスと派生クラスの同じ名前の虚関数を呼び出す場合:
  • ポインタがベースクラスのオブジェクトを指す場合、呼び出されたときのベースクラスの虚関数.
  • ポインタが派生クラスのオブジェクトを指す場合、派生クラスの虚関数が呼び出されます.このメカニズムを「多態」と呼ぶ.

  • class CBase{
        public:
            virtual void SomeVirtualFunction(){}
    };
    class CDerived:public CBase{
        public:
            virtual void SomeVirtualFunction(){}
    };
    int main() {
        CDerived ODerived;
        CBase * p = & ODerived;
    //          p          ,           ,           。
        p-> SomeVirtualFunction();
        return ();
    }
    

    多態の表現形式二
  • 派生クラスのオブジェクトは、ベースクラス参照
  • に付与することができる.
  • ベースクラス参照によってベースクラスと派生クラスの同じ名前の虚関数が呼び出された場合:
  • 参照がベースクラスのオブジェクトである場合、呼び出されたときのベースクラスの虚関数.
  • 参照が派生クラスの額オブジェクトを参照している場合、呼び出されるのは派生クラスの虚関数である.このメカニズムを「多態」とも呼ぶ.

  • class CBase{
        public:
            virtual void SomeVirtualFunction(){}
    };
    class CDerived:public CBase{
        public:
            virtaul void SomeVirtualFunction(){}
    };
    int main(){
         CDerived ODerived;
         CBase & r = ODerived;
    //           r          
        r. SomeVirtualFunction();
        return 0;
    }
    

    たじょうたいさよう
    オブジェクト向けのプログラム設計にマルチステートを用いることで,プログラムの拡張性を向上させることができる,すなわち,プログラムが機能を修正または追加する必要がある場合,変更と追加が必要なコードは比較的少ない.