在 C++ 中选择两个纯虚函数之一

Choosing one of two pure virtual functions in c++

有没有办法让派生的class选择实现两个纯虚函数之一?

在我的例子中,这些纯虚函数具有相同的通用目的,但在 class 的某些设置中,需要带有附加参数的函数。当然,始终可以选择使用完整参数集创建一个纯虚函数。然而,在这种情况下,最终用户总是有可能对他没有使用的这个额外参数感到疑惑。

所有的纯虚函数都必须在每个子类中实现。

但是,您可以通过定义一个带有完整参数集的纯虚函数,并为您认为可选的最后一个参数添加默认值来解决您的特定问题:

virtual void foo(int p1, std::string p2, double p3 = 0.0) = 0;

现在调用者可以选择传递两个或三个参数,而实现不需要 p3 的 类 可以忽略它。