gpt4 book ai didi

c++ - 从构造函数体调用父类(super class)构造函数

转载 作者:行者123 更新时间:2023-11-27 23:48:52 32 4
gpt4 key购买 nike

我想创建一个类构造函数,它只会在特定条件下调用它的父类(super class)构造函数。我目前对此的实现如下所示。

class MyClass : public OtherClass
{
public:
template<typename... Args>
MyClass(bool condition, Args&&... args)
{
if(condition)
{
*(OtherClass*)this = OtherClass(args...);
}
else
{
// Unrelated stuff
}
}
};

我不能在这里使用 MyClass(...) : OtherClass(...) {} 语法,因为不应每次都调用父类(super class)的构造函数。

有什么方法可以直接调用父类(super class)构造函数而不是调用移动构造函数(如我的示例所示)。

最佳答案

您可以为基类和派生类创建 2 个不同的构造函数。
派生类的构造函数调用基类的相应构造函数。
派生类中的静态方法根据传递的参数创建实例。
像这样:

class OtherClass
{
public:

OtherClass()
{
...
}

OtherClass(Args&... args)
{
...
}

} // class OtherClass

class MyClass: public OtherClass
{
private:

MyClass(): OtherClass()
{
...
}

MyClass(Args&... args): OtherClass(args)
{
...
}

public:

static MyClass* createInstance(bool condition,
Args&&... args)
{
if (condition)
return (new MyClass());
else
return (new MyClass(args));
}

} // class MyClass

关于c++ - 从构造函数体调用父类(super class)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48320027/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com