下面的代码有什么问题,解决方案是什么?
class A{public:
int a;
};
class B: public A{public;
int b;
};
class C:public A,public B{
};答:
上面的代码对于中C所继承的B也继承了A。事实上就是重复继承。对于编译器来说,上面的定义可以通过。但是,下面的代码却会报错。
C test;
test.a = 10;//包编译错,因为a不知道是c第一个父类的变量,还是第二个的变量。解决方案:
class A{
int a;
};
class B: public virtual A{
int b;
};
class C:public virtual A,public B{
};
多重继承与虚拟继承

本文探讨了C++中多重继承导致的问题及解决方法。通过示例说明了当一个类从多个基类继承时可能出现的重复继承问题,并介绍了如何使用虚拟继承来避免此类问题。
416

被折叠的 条评论
为什么被折叠?



