【发布时间】:2021-10-22 10:02:36
【问题描述】:
我有以下代码:
#include<iostream>
using namespace std;
struct Base{
void f(int x){
cout<<"B";
}
};
struct Derived: public Base {
virtual void f(double x){
cout<<"D";
}
};
int main(){
Derived d;
int x = 5;
d.f(x);
Base *pb = &d;
pb->f(x);
}
它输出:DB
即使 pb 存储指向派生类的指针。为什么会调用 Base 类的方法?
【问题讨论】:
-
您在基类方法中缺少
virtual。事后您不能使方法成为虚拟方法;从一开始就必须是这样。
标签: c++ derived-class