考虑以下代码:
#includeusing namespace std; int N = 0; void print(int a=N) { cout<
输出结果是 2 .
print函数使用了默认参数,而默认传入的参数又是一个变量的值,那么在改变了这个变量的值之后,在函数运行时传入的默认参数也会随之改变。
换言之,默认参数的值如果传入为变量的时候,并不是在编译期直接确定,而是要在运行期时候根据具体变量的值进行确定。

考虑以下代码:
#includeusing namespace std; int N = 0; void print(int a=N) { cout<
输出结果是 2 .
print函数使用了默认参数,而默认传入的参数又是一个变量的值,那么在改变了这个变量的值之后,在函数运行时传入的默认参数也会随之改变。
换言之,默认参数的值如果传入为变量的时候,并不是在编译期直接确定,而是要在运行期时候根据具体变量的值进行确定。