派生函数不使用所有可用参数是否可以接受?

Is it acceptable for a derived function to not make use of all available parameters?

我有一个重写的成员函数,它没有使用传递给它的所有参数?这是否表明存在设计缺陷?

观察未使用的参数总是一个好主意。编译器通常会发出警告,这绝对是提醒注意潜在问题。

如果你的界面过于宽泛,并且或多或少经常传递不需要的参数,这可以看作是设计问题。但是有很多例子,在某些情况下参数未被使用。

一方面,编译器发出警告,另一方面,编译器提供属性来抑制警告,如下例:

int f1( int x [[gnu::unused]] )
{
    return 0;
}

为什么我们没有在 C++ 标准中看到 [[unused]] 属性对我来说有点神秘。

这里根本没有一般性的 good/bad 建议。尽量避免它,但不要让它成为学术规则。你总是应该考虑一个替代方案,但这也可能会带来更多问题。