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