打印

多重继承问题

[复制链接]
955|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
这个是说虚基类派生,如果不希望在一个派生类中存在某个公共基类的多个同名的成员变量,就使用虚基类。虚基类方法可以保证在任何一个存在公共基类的派生类中,不会存在一个以上的同名成员变量

使用特权

评论回复
5
baidudz| | 2012-5-28 17:28 | 只看该作者
在Z中就有重复继承,估计你的对象成员调用少,没遇到错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝