在创建派生类实例时提供基类构造函数参数
Providing base class constructor parameters when creating a derived class instance
有没有办法在新建派生类实例时向基类提供构造函数参数?(即,当基类构造函数具有这些参数的默认值时)
例如
class Base
{
public:
Base::Base( string name = "" )
: m_name( name ) {};
private
string m_name;
};
class Derived : public Base
{
public:
Derived::Derived() {};
};
然后我需要做这样的事情:
void main()
{
Base* instance = new Derived( "Jeff" );
};
这显然是行不通的。有没有办法新建派生实例并为它的基提供构造函数参数,而无需在派生类构造函数中提供该参数。
有没有办法新建派生实例并为它的基提供构造函数参数,而无需在派生类构造函数中提供该参数。
不。
派生类构造函数需要获取参数,并将它们显式传递给基类构造函数。
class Derived : public Base
{
public:
Derived::Derived(string name) : Base(name) {};
};
无论您是否使用new
,都是这种情况。
如果您希望在基类中使用不同的名称,则无法执行此操作。 但是,不同名称不是一个条件,您可以使用传递常量文本来执行此操作,如下所示:
class Base
{
public:
Base::Base( string name = "" )
: m_name( name ) {};
private
string m_name;
};
class Derived : public Base
{
public:
Derived::Derived() : Base ("Jeff") {};
Derived::Derived(string &name) : Base (name) {};
};
OR 将默认值传递给派生类构造函数。
class Derived : public Base
{
public:
Derived::Derived(string name = "Jeff") : Base (name) {};
};
相关文章:
- C++17 使用驱动类常量作为基类构造函数的参数来初始化基类构造函数
- 派生类(构造函数具有参数)和基类(构造函数缺少参数)之间没有可行的转换
- 在成员构造函数之后调用基类构造函数
- 如何在将原始指针移动到基类构造函数之前从unique_ptr中提取原始指针
- C++:在共享对象中调用抽象基类构造函数/未定义的符号
- 如何在 C++ 中将参数传递给基类构造函数
- 将数据成员的指针传递给基类构造函数是否安全?
- 使用基类构造函数初始化儿童类
- 使用基类构造函数的子类构造函数的大纲定义
- MSVC 无法识别继承模板类的模板类的"直接"基类构造函数
- 子类的构造函数后跟冒号后的基类构造函数是什么意思?
- 是否可以使用基类构造函数通过派生类将值初始化为基类私有成员?
- 当派生类无法轻易将参数传递到基类时,如何调用基类构造函数
- 是否可以在运行时切换到不同的基类构造函数?
- 对基类构造函数的未定义引用
- 如何为基类构造函数中的每个子类执行特定任务
- 将类传递到基类构造函数的模板参数中?
- 如何在基类构造函数中使用派生类成员
- (为什么)纯虚拟派生类中是否需要虚拟基类构造函数调用?
- 使用相同的参数调用基类C++构造函数