为什么将void添加到方法参数列表中

时间:2011-09-14 06:43:38

标签: c++

我见过带有以下签名的方法:

void foo (void);

他们不接受任何争论,但我想知道这样做是否有用。你有没有理由想要这样做?

4 个答案:

答案 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。更重要的是,它不是声明无参数函数的惯用方法。