基类指针转换成子类指针后
#include <iostream>using namespace std;
class A {
public:
virtual void fun0() {
cout << "A::fun0 (virtual)" << endl;
}
void fun1() {
cout << "A::fun1" << endl;
}
void fun2() {
cout << "A::fun2" << endl;
}
};
class B : public A {
public:
void fun0() {
cout << "B::fun0 (virtual)" << endl;
}
void fun1() {
cout << "B::fun1" << endl;
}
void fun3() {
cout << "B::fun3" << endl;
}
};
int main() {
A *pa=new A;
B *pb=(B*)pa;
pb->fun0();
pb->fun1();
pb->fun2();
pb->fun3();
return 0;
}
以下是打印结果,哪位朋友可详细解释一下是为什么?主要是第一个不明白为什么输出的不是B::fun0 (virtual)
A::fun0 (virtual)
B::fun1
A::fun2
B::fun3
[[it] 本帖最后由 gz81 于 2009-7-30 07:33 编辑 [/it]]