- 论坛徽章:
- 0
|
在学习C++,遇到多重继承的问题:
类的结构如下,每个类都只有一个函数,答应自己类名称。
//___A
//__ / \
//__B D
//_ / \ / \
//_C F E
//其中F的调用有问题。
其中F来自B和D的多重继承。
情况1。使用 F f;A* pa;pa=&pa->;p();编译无法通过。
情况2。使用 F f;B* pb;pb=&pb->;p();编译也无法通过.
情况3。使用 F f;D* pb;pb=&pb->;p();编译可以通过,但是显示好像是来自
类E中的p();
编译器是VC toolkit2003命令行 编译工具
#include <iostream>;
using namespace std;
class A
{
public:
virtual p(){cout<<"A\n";}
};
class B:public A
{
public:
virtual p(){cout<<"B\n";}
};
class C:public B
{
public:
virtual p(){cout<<"C\n";}
};
class D:public A
{
public:
virtual p(){cout<<"D\n";}
};
class E:public D
{
public:
virtual p(){cout<<"E\n";}
};
class F:public B,D
{
public:
virtual p(){cout<<"F\n";}
};
int main()
{
A* pa;
A a; pa=&pa->;p();
B b; pa=&pa->;p();
C c; pa=&pa->;p();
D d; pa=&pa->;p();
E e; pa=&pa->;p();
B* pb;//A* pb;or D* pb;都不行
F f; pb=&pa->;p();
return 0;
} |
|