函数的默认参数可以在声明或定义中指定,但注意:
1.只能在声明或定义两者中的一个指定。即声明中指定了默认参数,定义中就不能指定了,为的是防止默认参数不一致的情况
2.同一函数同一个作用域中不能重复声明同一形参的默认参数
3.同一函数在不同作用域中可重复声明默认参数
4.可用::全局作用符调用全局声明的函数
5.通常默认参数在声明中指定
代码示例:
- #include <iostream>
- using namespace std;
- int f(int x=1);//声明指定默认参数
- //int f(int x=1); //error:不能再次声明,redefinition of default parameter : parameter 1
- //int f(int x=1) //error: redefinition of default parameter : parameter 1
- //{return x; 声明指定默认参数,定义时不能再指定
- //}
- int f(int x) //OK
- {
- return x;
- }
- void main()
- {
- cout<<f()<<endl; //out:1
- int f(int x=1); //局部重新声明
- cout<<f()<<endl; //out:2
- //int f(int x=3); //error:局部不能再声明,redefinition of default parameter : parameter 1
- cout<<::f()<<endl; //out:1调用全局声明的函数
- }