给出以下代码:
#pragma once class B { public: B(void) { } ~B(void) { } };
我知道我也可以这样写:
#pragma once class B { public: B() { } ~B() { } };
void
在第一个例子中有什么目的?是否某种类型的实践表明构造函数采用零参数?
两者是相同的,至少在C++中是这样.在C中,提供一对空括号通常表示未指定的参数列表(与空参数列表相对).C++没有这个问题.
如何正确回答这么多次?另一个SO漏洞?
很久以前你在C中做过这样的事情(我的ISO-C生锈了:)):
void foo(a, b) int a, int b { }
在创建C++时,名称mangling需要参数的类型,因此对于C++,它被更改为:
void foo(int a, int b) { }
而这一变化被提升到C.
在这一点上,我相信避免破坏现有的C代码:
void foo()
还有这个:
void foo(void)
意思是两个非常不同的东西,()
意思是不检查参数号或类型,并且(void)
意味着不带参数.对于C++ ()
意味着不检查任何东西是不会那么工作()
和(void)
意味着在C同样的事情++.
所以,对于C++而言()
,(void)
总是一样的.
至少那是我记得它的方式...... :-)