この数年後、私は奇妙な混乱に陥っています。ランタイム ポリモーフィズムの問題、仮想関数、およびそれらの多くについては知っていますが、以下のコード サンプルについては確信が持てませんでした。
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++シナリオを考えると、私の質問は次のとおりです。
- このシナリオをポリモーフィズムと呼ぶことができますか?
- はいの場合、これを静的/コンパイル時のポリモーフィズムと呼ぶことができますか?
- いいえの場合、これは正しくない実装であり、仮想を使用する必要があると想定する必要がありますか?
前もって感謝します!