C ++警告:使用未使用的参数覆盖虚拟函数

时间:2020-05-11 22:47:32

标签: c++

这是我在StackOverflow上发布的第一个问题。我遇到了C ++警告来解决。问题是我们在派生类中重写了虚函数,而在重写的函数主体中没有使用一些函数参数。结果,编译器将保持警告状态。在我的带有类层次结构的C ++项目中,这是一个非常普遍的问题。我尝试了以下两种解决方案,并且都可以使用。只是想知道哪一个更金黄色或被广泛使用。或者,如果对此问题还有其他黄金解决方案,请随时提出建议。

void f(int a) {} (WARNING) ==> void f(int a) { (void)a; } (NO WARNING)
void f(int a) {} (WARNING) ==> void f(int) {} (NO WARNING)

谢谢!

1 个答案:

答案 0 :(得分:2)

所有这三个属性(注释中提到的第三个属性为[[maybe_unused]])都很好,选择纯粹是出于审美和主观。

(void)a对我个人而言意义不大,但是它有很长的传统,在其他一些未使用名称的情况下,与参数一样,省略名称的选择也不同,所以可能唯一的选择(在[[maybe_unused]]尚不存在的语言的早期版本中。)