【发布时间】:2019-12-30 05:08:18
【问题描述】:
假设我有一个名为“组件”的基类
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);
};
【问题讨论】:
-
这是三个不同的功能。无论如何,如果你有一个指向
Component的指针/引用,init的调用者如何知道要传递多少个参数? -
对不起,这不能在 C++ 中完成。 C++ 不能以这种方式工作。子类只能覆盖具有完全相同签名的虚拟方法。这是根本。
-
您想使用可变参数函数。它应该适用于纯虚拟。
-
你想如何调用那些初始化函数?这可能会为我们提供如何实现这一目标的线索。
标签: c++ polymorphism virtual