如果對您發現愚蠢的問題,請原諒我。我是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().
我將非常感謝如果有一個人解釋什麼在兩種情況下發生的(在指針操作而言)
感謝