派生类和基类的同名函数
#include <iostream>
using namespace std;
class B
{
public:
// virtual void func()
void func()
{
cout << "B func"<<endl;
}
};
class D:public B
{
public:
void func()
{
cout << "D func"<<endl;
}
};
int main(){
D d;
B *pb = &d;
D *pd = &d;
pb->func();
pd->func();
return 0;
}
如果B中的func是virtual的话,就会产生动态绑定,输出都是D func,但是去的B 中的virtual,那么pb->func,输出的就是B func,这怎么理解呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这说明
pb
是一个B
类型的指针,它所指向的实际是一个D
类型的对象。对于非虚函数,
pb->func
会直接在指针类型,也就是B
里去找函数对于虚函数,
pb->func
会在实际类型D
中去找函数