应该接受不同输入参数的纯虚函数——应该如何实现?

Pure virtual function that should accept varying input arguments - how should this be implemented?

假设我有一个名为 "Component"

的碱基 class
class Component
{

public:
    virtual void init() = 0;

};

此基础 class 需要派生 classes 来定义 "init" 函数。但是,此 init 函数声明强制该函数不接受任何输入参数。这不是我想要的。

我正在寻找一种方法来执行 "init" 函数,但允许派生的 class 在它接受的参数数量上有所不同。

根据组件类型,派生的 class 应该接受不同数量的输入。

这在 C++ 中如何实现?

例子

class DerivedComponent1 : Component
{
    void init(int arg1);
};

class DerivedComponent2 : Component
{
    void init(int arg1, int arg2);
};

您应该考虑使用 switch 语句而不是 virtual 限定符来解决此问题。只需选择一个函数定义并选择默认值或零即可绕过对参数的考虑。当您尝试以这种方式对 class 所做的事情进行编码时,很容易混淆,因此必须对您的函数进行完整注释和单元测试。

[编辑澄清:您可以在每个新的派生实例中考虑 virtual 限定符,但这不是您所问问题的解决方案。 ConstructorDestructor 方法必须具有非常具体的效果;否则,质量测试 class 的效果是不切实际的,因此当您需要依赖 one-size-fits-all constructor 时,只有在编码过程中非常小心才能真正实现该效果]