C++若虚基类定义了带参数的构造函数,没定义默认构造函数,则在其所有派生类通过构造函数对虚基类初始化

。。这句话什么意思??

如果虚基类中定义有带参数的构造函数,并且没有默认定义构造函数,则整个继承结构中,所有直接或间接的派生类必须在构造函数的成员初始化列表中列出虚基类构造函数的调用。

参见:http://blog.csdn.net/opk625153475/article/details/7798035

追问

能解释得详细一点不?

追答为什么这么纠结?
class Base{  
public:  
    Base(int sa)  //Base基类,构造函数带参
    {  
        a=sa;  
        cout<<"constructing Base"<<endl;  
    }  
protected:  
    int a;  
};  
  
class Base1:virtual public Base //直接派生类    间接应该是指以子类为父类的派生类
{  
public:  
    Base1(int sa,int sb):Base(sa) //这里派生类 构造函数必须要有Base(sa)这样的调用!以完成虚基类的初始化
    {  
        b=sb;  
        cout<<"constructing Base1"<<endl;  
    }  
protected:  
    int b;   
};

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答