虚基类
时间: 2024-02-19 21:04:03 浏览: 71
虚基类的演示
4星 · 用户满意度95%
虚基类是C++中一个特殊的类,它用于解决多继承时可能出现的菱形继承问题。所谓菱形继承,是指一个派生类同时继承了两个基类,而这两个基类又共同继承自同一个基类,这样就会导致派生类中会有两份来自同一个基类的数据成员和成员函数,引发二义性问题。
通过将这个共同的基类设置为虚基类,可以使得共同基类在派生类中只被继承一次,从而避免了重复继承的问题。虚基类可以通过在基类继承列表中使用virtual关键字来指定。例如:
```
class Base
{
public:
int m_data;
};
class Derived1 : virtual public Base
{
public:
void foo() { m_data = 1; }
};
class Derived2 : virtual public Base
{
public:
void bar() { m_data = 2; }
};
class Derived3 : public Derived1, public Derived2
{
public:
void foobar() { m_data = 3; }
};
```
在这个例子中,Base类被指定为虚基类,Derived1和Derived2都通过虚继承方式继承自Base类,而Derived3则同时继承自Derived1和Derived2,但由于Base类是虚基类,所以在Derived3中只有一份Base类的成员。
阅读全文