我不了解继承基类构造函数的新C ++ 11特性:
using BaseClass::BaseClass;
我认为这是一个方便的功能,但现在我有一个派生类,它有其他成员,如果我想初始化派生类的成员,我似乎必须重写构造函数:
struct BaseClass
{
BaseClass(char* name, int intVal, float floatVal) : name(name), intVal(intVal), floatVal(floatVal) {}
char* name;
int intVal;
float floatVal;
};
struct DerivedClass : BaseClass
{
using BaseClass::BaseClass;
int additionalMember;
};
我是否必须手动重写构造函数并将值传递给基础构造函数,然后初始化其他成员?
struct DerivedClass : BaseClass
{
DerivedClass(char* name, int intVal, float floatVal) : BaseClass(name, intVal, floatVal), additionalMember(7) {}
int additionalMember;
};
如果是这样,继承构造函数的这一新功能的使用似乎非常有限。
所以我每次都要重写构造函数吗?
答案 0 :(得分:2)
您可以使用默认值:
struct DerivedClass : BaseClass
{
using BaseClass::BaseClass;
int additionalMember = 0;
};
但是,如果您需要从班级用户传递的值,则必须提供DerviedClass
的构造函数。