1

この数年後、私は奇妙な混乱に陥っています。ランタイム ポリモーフィズムの問題、仮想関数、およびそれらの多くについては知っていますが、以下のコード サンプルについては確信が持てませんでした。

    class A{
    public:
        void f(){
            cout<<"I m called from A"<<endl;
        }
    };

    class B : public A{
    public:
        void f(){
            cout<<"I m called from B"<<endl;
        }
    };

    int main(void){
        B* b1 = new B();    
        A* a1 = b1; //Object reference of class B is assigned to a pointer of class A

        b1->f(); //Output is "I m called from B"
        a1->f(); //Output is "I m called from A"

        return 0;
    }

上記のC++シナリオを考えると、私の質問は次のとおりです。

  1. このシナリオをポリモーフィズムと呼ぶことができますか?
  2. はいの場合、これを静的/コンパイル時のポリモーフィズムと呼ぶことができますか?
  3. いいえの場合、これは正しくない実装であり、仮想を使用する必要があると想定する必要がありますか?

前もって感謝します!

4

1 に答える 1