子类不会继承父类的构造方法
子类创建对象时,先执行父类无参的构造方法,然后执行子类的构造方法,如果父类只有有参数的构造方法,则子类必须显示调用此带参构造方法
继承构造函数不会继承参数的默认值
struct A
{
A(int i) {}
A(double d,int i){}
A(float f,int i,const char* c){}
//...等等系列的构造函数版本号
};
struct B:A
{
B(int i):A(i){}
B(double d,int i):A(d,i){}
B(folat f,int i,const char* c):A(f,i,e){} A(f,i,e) 是实参
//......等等好多个和基类构造函数相应的构造函数
};
Son(string name, char sex, int age, int height, int tall) :Parent(name, sex, age)
{
this->height = height;
this->tall = tall;
}
struct A
{
A(int i) {}
A(double d,int i){}
A(float f,int i,const char* c){}
//...等等系列的构造函数版本号
};
struct B:A
{
using A::A;
//关于基类各构造函数的继承一句话搞定
//......
};
当使用using语句继承基类构造函数时。派生类无法对类自身定义的新的类成员进行初始化,我们可使用类成员的初始化表达式,为派生类成员设定一个默认初始值
struct A
{
A(int){}
};
struct B
{
B(int){}
};
struct C:A,B
{
using A::A;
using B::B;
C(int i):A(i),B(i) {}
};
A 和B 的构造函数会导致C 中重复定义相同类型的继承构造函数。
解决方法是让继承类进行显示定义构造函数。
对于继承构造函数来说,參数的默认值是不会被继承的