C++ void函数声明

问题描述:

可能重复:
C++ Why put void in params?C++ void函数声明

什么是这两个声明和使用更普遍的区别?

void function1(); 

void function2(void); 
+0

可能的重复http://stackoverflow.com/q/5587207/198011 –

C++没有什么区别,它很好地定义了它代表0个参数。

然而,它确实用C表示。具有(void)的函数表示没有参数,而()表示具有任意数量的参数。

http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Fparam_decl.htm

在函数定义一个空的参数列表指示功能 不带任何参数。函数声明 中的空参数列表指示函数可以采用任何数量或类型的参数。因此,

int f() 
{ 
    ... 
} 

指示函数f不采用参数。但是,

int f(); 

只是表示参数的数量和类型未知。 要明确指示函数不带任何参数,应该使用关键字void定义函数 。

+0

令人惊叹的解释。非常感谢wormsparty – iggy2012

+0

不客气:) – wormsparty

没有区别。我会说第一个更为常见,清晰和简洁。

C++没有什么区别。
第二个声明只是明确表示该函数不带参数。

二是更常用的C,首先是在C++中比较常见的一种。

有一个在C情况下,差异的原因是:
随着(void),你指定的函数没有参数,同时与()您指定的参数是不确定的(自变量数目不详)。

但是,如果它不是函数声明而是函数定义,那么即使在C中它也与(void)相同。

在C++中,没有区别,第二种形式仅保留用于C兼容性。第一种形式在C++中是首选。

在C中,它们表示不同的事物。 第一种形式指定一个函数,它接受未知数量的参数,第二种形式是一个采用零参数的函数。

一些很老的(非标准的)C编译器可能会抱怨第一个,所以第二个应该更加便携。

除此之外,没有区别。

第一个更常用于用户代码,很简单,因为它更短。

实际上没有区别如果你没有任何参数传递给方法用户无效或空括号。注意它只是来自参数。如果你的方法没有任何返回值,你必须使用void关键字。第一个在C#中更为常见