C ++:构造函数()和构造函数(void)之间的区别

时间:2014-12-27 20:24:07

标签: c++

我注意到当我在Visual Studio中创建一个新的C ++类时,它会将Foo(void)~Foo(void)作为构造函数和析构函数模板而不是Foo()~Foo()写下来。但是,这两个版本似乎都有效。两者之间是否存在差异,或者我使用哪个版本无关紧要?

3 个答案:

答案 0 :(得分:5)

在C ++中,两者在技术上是相同的,就像在"一个不带参数的函数"

欲了解更多信息:

然而,在C中,Foo(void)是"一个不带参数的函数",但是Foo()是"一个接收未知量参数的函数。"这些参数属于未指定的类型。

Foo(void)用于两种语言,含义相同。

答案 1 :(得分:1)

两者都是等价的,所以这只是风格的选择。我更喜欢Foo(),因为它涉及较少的打字,而且这是我经常看到的内容。

这个问题实际上是covered before on SO

显然{C}中的foo()表示"函数foo采用未指定数量的未指定类型的参数"在C ++中,它意味着"一个不带参数的函数foo。"

答案 2 :(得分:0)

只有当构造函数和析构函数不需要任何参数时,才有相同的参数。 Foo(void)似乎也不常使用。