C++虚基类的用法

来源:百度知道 编辑:UC知道 时间:2024/06/02 11:27:59
不是很理解,请详解

额...书上应该有的吧,但我不敢保证比书上讲得更好,只是说说自己的理解

c++是一种可以实现多继承(同时派生自两个或更多的类)的面向对象语言(严格的说它并不是真正的面向对象),为了避免以下情形,所以引出了虚基类

类B , 类C 均派生自类A ; 而后,类D派生自 类B和类C即:
class B : public class A
{
//....
};

class C : public class A
{
//....
};

class D : pubic class B, public C
{
//...
};

这样的话,B, C类中继承自A类,那么D类同时继承B,C类,也会继承得到A类的内容,但是编译器不知道是从B类那里得到A类的内容还是从C类那里得到A类的内容,因此会产生编译错误,但如果,使用虚基类的话,B类和C类中将只用A类的一个拷贝,
当D继承的时候,是直接从A类那里得到,便不会产生编译错误...

如下:
class B : virtual public class A //注意这里的virtual关键字
{
//....
};

class C : virtual public class A //注意这里的virtual关键字
{
//....
};

class D : pubic class B, public C
{
//...
};