在没有参数的函数中使用void?

时间:2012-03-03 10:06:00

标签: c++ function methods void

在C ++中,在没有参数的函数中使用void,例如:

class WinMessage
{
public:
    BOOL Translate(void);
};

是多余的,你也可以写Translate();

我,我自己通常都包含它,因为它在支持IDE显示void的代码完成时有点帮助,因为它确保了该函数绝对没有参数。

我的问题是,将void添加到无参数函数是一种好习惯吗?现代代码应该鼓励它吗?

5 个答案:

答案 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()形式,因此其他人阅读您的代码会更舒适,更有效率。
  • 在屏幕上花费较少(尤其是像这样多余的东西)意味着对于阅读代码的人来说意识不足。
  • 有时候,那些没有在1988年用C语言编程的人会问“foo(void)是什么意思?”

答案 4 :(得分:0)

正如旁注。不包括空白的另一个原因是像starUML这样的软件可以读取代码并生成类图,将void作为参数读取。虽然这可能是UML生成软件中的一个缺陷,但是如果你想拥有干净的图表,必须返回并删除“void”仍然很烦人