質問がばかげていると思われた場合は、ご容赦ください。私は C++ の初心者で、ラムタイム ポリモーフィズムを研究していました。基本クラス オブジェクトが派生クラス関数 (非仮想) を呼び出すとどうなるか知りたいです。たとえば、コードを見てください
class base {
public:
virtual void vfunc() {cout << "This is base's vfunc().\n";}
};
class derived1 : public base {
public:
void vfunc() {cout << "This is derived1's vfunc().\n";}
};
int main()
{
base *p, b;
derived1 d1;
p = &b;
p->vfunc();
p = &d1;
p->vfunc();
return 0;
}
目的の出力が得られた後、基本クラスから virtual キーワードを削除しました。プログラムを実行すると、出力は次のようになります。
This is base's vfunc().
This is base's vfunc().
どちらの場合も(ポインター操作に関して)何が起こったのかを誰かが説明してくれれば、とても感謝しています
ありがとう