关于继承基类构造函数的新 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;
};
如果是这样,继承构造函数这个新功能的使用似乎真的很有限。
那么我每次都必须重写构造函数吗?
最佳答案
您可以使用默认值:
struct DerivedClass : BaseClass
{
using BaseClass::BaseClass;
int additionalMember = 0;
};
但是,如果您需要从类的用户传递的值,则必须提供 DerviedClass
的构造函数。
关于c++ - 使用C++11继承构造函数时如何初始化派生类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43214962/