我写了一段代码,但我对它的输出感到困惑:
#include <iostream>
using namespace std;
class B{
public:
virtual void foo() {cout << "B::foo" << endl;}
};
class D:public B{
public:
virtual void foo() {cout << "D::foo" << endl;}
void disp() {cout << "D::disp" << endl;}
};
void func(B *pb){
D *pd1 = static_cast<D*>(pb);
pd1->foo();
pd1->disp();
}
int main(int argc, char *argv[])
{
B* pb = new B();
func(pb);
return 0;
}
输出是:
B::foo
D::disp
但据我所知,pb
指向类型 B。并且其中没有命名函数disp()
?那么,为什么它可以访问disp()
D 类中的函数呢?