我见过带有以下签名的方法:
void foo (void);
他们不接受任何争论,但我想知道这样做是否有用。你有没有理由想要这样做?
答案 0 :(得分:52)
这是旧版C的延续,其中foo()
表示“具有未知数量参数的函数”,foo(void)
表示“参数为零的函数”。在C ++中,foo()
和foo(void)
都表示“参数为零的函数”,但有些人更喜欢第二种形式,因为它更明确。
答案 1 :(得分:16)
C ++ 03标准说(强调我的):
8.3.5.2
parameter-declaration-clause确定可以的参数 调用函数时指定及其处理。 [注意: parameter-declaration-clause用于转换参数 在函数调用中指定;见5.2.2。 ] 如果 parameter-declaration-clause为空,该函数为no 参数强>
这意味着如果你正在与编译器交谈,那只是一个品味问题。
如果您正在编写将被其他人阅读的代码,那么C ++的处理方式是
void foo();
另一种形式仅在与C兼容的原因下仍然有效,其中 两个签名之间存在差异。
答案 2 :(得分:3)
对于没有参数的函数
,这是C
的旧版本的遗产
答案 3 :(得分:3)
在C ++代码中,没有理由以这种方式使用void。更重要的是,它不是声明无参数函数的惯用方法。