多重继承问题

[复制链接]
 楼主| xsgy123 发表于 2012-5-28 17:02 | 显示全部楼层 |阅读模式
这个多重继承怎么不报错,我记得以前报错的呀
class A
{
public:
    int a;
    void s(){}
};

class X : public A
{
};

class Y : public A
{
};

class Z : public X, public Y
{
};


void main()
{
    Z z;
}
sinadz 发表于 2012-5-28 17:10 | 显示全部楼层
典型的菱形继承,存在二义性。用虚继承可以解决这种ambiguity
yybj 发表于 2012-5-28 17:19 | 显示全部楼层
你只是定义了一个对象,自然是没错。
一旦你用了z.a;或者z.s(),编译器就会报错啦。
秋天落叶 发表于 2012-5-28 17:25 | 显示全部楼层
这个是说虚基类派生,如果不希望在一个派生类中存在某个公共基类的多个同名的成员变量,就使用虚基类。虚基类方法可以保证在任何一个存在公共基类的派生类中,不会存在一个以上的同名成员变量
baidudz 发表于 2012-5-28 17:28 | 显示全部楼层
在Z中就有重复继承,估计你的对象成员调用少,没遇到错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

229

主题

2603

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部