我正在学习虚函数,我对以下程序的结果感到非常困惑,我希望两者都a1.virFun(b1)
应该b1.virFun(b1)
返回“来自 B 的你好”,但程序返回“来自 A 的你好”。这与我的理解相反。您能否解释一下为什么b1.sayHello()
没有被调用,即使我将 b1 作为参数传递并且b1.sayHello()
是虚函数。
#include<iostream>
using namespace std;
class A
{
public:
virtual void sayHello();
void virFun(A obj);
};
class B : public A
{
public:
void virFun(A obj);
virtual void sayHello();
};
void A::sayHello()
{
cout << "hello from A" << endl;
}
void B::sayHello()
{
cout <<"hello from B" << endl;
}
void A::virFun(A obj)
{
obj.sayHello();
}
void B::virFun(A obj)
{
obj.sayHello();
}
int main()
{
A a1;
B b1;
a1.virFun(b1);
b1.virFun(b1);
return 0;
}