代码:
#include <iostream>
using namespace std;
int f(int x = 0) {
cout << "x:" << x << endl;
return 0;
}
int main() {
f();
int f(int x = 1);
f();
return 0;
}
Output(在g ++ 5.1上测试):
x:0
x:1
我的问题:
int f(int x = 1);
是声明还是定义?答案 0 :(得分:14)
来自dcl.fct.default中的§8.3.6:
- 对于非模板函数,可以在以后的函数声明中添加默认参数 相同的范围。不同范围内的声明具有完全不同的默认参数集。
醇>
未定义的行为。你所看到的是强制性的。