我想在C ++中编写一个带有空体的虚函数。
这些是我所知道的方式:
virtual void f(int a, int b, int c) { }
如果我这样写,编译器会发出关于未使用参数的警告。我不想全局压制这种警告,因为它在其他情况下仍然有用。
这个问题How do I best silence a warning about unused variables?讨论了如何抑制未使用的参数,但这些解决方案有如下所述的缺点:
virtual void f(int a, int b, int c) { (void) a; (void) b; (void) c; }
如果我这样写,我必须写出尽可能多的(void)
作为参数的数量。如果有50个函数,并且每个函数都有10个参数,我必须手动输入500 (void)
,这很乏味。另外,每次添加或删除形式参数时,都需要添加或删除相应的(void)
语句。与“不要重复自己”相矛盾:每次一次更改发生时,必须修改两个位置。
virtual void f(int /*a*/, int /*b*/, int /*c*/) { }
如果我这样写,当我写一个函数调用时,IDE将无法提示正式参数的名称而只是类型;当我在派生类中重写此函数时,IDE也无法提供带有这些参数名称的声明。
virtual void f(int a, int b, int c) = 0;
如果我这样写,派生类必须覆盖这个函数,这不是我想要的。
我希望如果有这样的事情:
virtual void f(int a, int b, int c) = default;
是否有这样的语言功能,最佳做法或解决方法?
谢谢!