Loc*_*ead 10 c++ naming function-prototypes
我一直认为函数原型必须包含函数的参数及其名称.但是,我只是尝试了这个:
int add(int,int);
int main()
{
std::cout << add(3,1) << std::endl;
}
int add(int x, int y)
{
return x + y;
}
Run Code Online (Sandbox Code Playgroud)
它奏效了!我甚至尝试过极端谨慎编译:
g++ -W -Wall -Werror -pedantic test.cpp
Run Code Online (Sandbox Code Playgroud)
它仍然有效.所以我的问题是,如果你不需要函数原型中的参数名,为什么它这么常见呢?这有什么用途吗?它与功能的签名有关吗?
Tho*_*mas 19
不,这些不是必需的,实际上被编译器忽略了.你甚至可以在不同的声明中给它们不同的名字; 以下是完全合法的:
int foo(int bar);
int foo(int biz);
int foo(int qux) {
...
}
Run Code Online (Sandbox Code Playgroud)
将它们放入的原因是文档:
声明中不需要参数名称。它们纯粹是文档。
您甚至不需要定义中的名称:
int f(int)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在 C++ 中编译得很好(尽管在 C 中不行)。这有时对于继承、重载、函数指针等很有用。
| 归档时间: |
|
| 查看次数: |
8754 次 |
| 最近记录: |