有关类中的函数覆盖和多态(阿里云笔试题)
class BaseClass{
public:
void myfun1()
{
myfun2();
cout<<"1"<<endl;
}
virtual void myfun2()
{
cout<<"2"<<endl;
}
};
class ExtClass:public BaseClass
{
public:
void myfun1()
{
myfun2();
cout<<"4"<<endl;
}
void myfun2()
{
cout<<"5"<<endl;
}
};
void myfunx(BaseClass *h)
{
h->myfun1();
h->myfun2();
}
int main(int argc,char *argv[])
{
ExtClass h;
h.myfun1();
h.myfun2();
cout<<"---"<<endl;
myfunx(&h);
return 0;
}
输出运行结果
运行后得到:
5
4
5
---
5
1
5
疑问是:myfun2实现了多态,用基类指针指向时,执行派生类的程序段,而myfun1没有实现多态,虽然是用基类指针指向派生类,但它仍指向基类的myfun1的程序段,可是在基类的myfun1中调用myfun2函数,怎么可能是执行了派生类的myfun2呢?
请各位指教!谢谢