在C ++中,在没有参数的函数中使用void
,例如:
class WinMessage
{
public:
BOOL Translate(void);
};
是多余的,你也可以写Translate();
。
我,我自己通常都包含它,因为它在支持IDE显示void
的代码完成时有点帮助,因为它确保了该函数绝对没有参数。
我的问题是,将void
添加到无参数函数是一种好习惯吗?现代代码应该鼓励它吗?
答案 0 :(得分:21)
在C ++中
void f(void);
与:
相同void f();
第一种风格仍然可以合法写的事实可以归结为C.
n3290§C.1.7(C ++和ISO C兼容性)声明:
更改:在C ++中,使用空参数列表声明的函数占用 没有争论。
在C中,空参数列表表示数字和 函数参数的类型是未知的。
示例:
int f(); // means int f(void) in C++ // int f( unknown ) in C
在C中,避免不受欢迎的“未知”含义是有意义的。在C ++中,它是多余的。
简短回答:在C ++中,它是来自太多C编程的宿醉。在我看来,除非你真的需要“支持C ++”,否则它就会出现这种情况。
答案 1 :(得分:6)
我完全没有理由这样做。 IDE将使用空参数列表完成函数调用,并减少4个字符。
我个人认为这使得已经冗长的C ++变得更加冗长。我所知道的语言没有版本需要在这里使用void
。
答案 2 :(得分:5)
我认为这只会有助于向后兼容旧的C代码,否则就是多余的。
答案 3 :(得分:3)
我感觉没有。原因:
BOOL Translate()
形式,因此其他人阅读您的代码会更舒适,更有效率。foo(void)
是什么意思?”答案 4 :(得分:0)
正如旁注。不包括空白的另一个原因是像starUML这样的软件可以读取代码并生成类图,将void作为参数读取。虽然这可能是UML生成软件中的一个缺陷,但是如果你想拥有干净的图表,必须返回并删除“void”仍然很烦人