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