在虚继承中,虚基类是由最终的派生类初始化的,换句话说,最终派生类的构造函数必须要调用虚基类的构造函数。对最终的派生类来说,虚基类是间接基类,而不是直接基类。这跟普通继承不同,在普通继承中,派生类构造函数中只能调用直接基类的构造函数,不能调用间接基类的。
下面我们以菱形继承为例来演示构造函数的调用:
下面我们以菱形继承为例来演示构造函数的调用:
- #include <iostream>
- using namespace std;
- //虚基类A
- class A{
- public:
- A(int a);
- protected:
- int m_a;
- };
- A::A(int a): m_a(a){
}
- //直接派生类B
- class B: virtual public A{
- public:
- B(int a, int b);
- public:
-