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

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

本文关键字:何实现 实现 该接受 输入 参数 函数      更新时间:2023-10-16

假设我有一个名为"组件"的基类

class Component
{
public:
virtual void init() = 0;
};

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

我正在寻找一种方法来强制执行"init"函数,但允许派生类在其接受的参数数量上变化。

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

在C++如何实现这一目标?

例子

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

您应该考虑使用switch语句而不是virtual限定符来解决此问题。只需选择一个函数定义并选择默认值或零即可绕过对参数的考虑。当你尝试以这种方式编写关于类所做的事情时,很容易感到困惑,所以你的函数必须被完全注释和单元测试。

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