c/c++函数参数的缺省值使用要点:

c/c++函数参数的缺省值使用要点:

函数与缺省值用例
声明
void func(int ivalue = 1, string str = “”);//声明中给参数给了默认值
定义
void func(int ivalue, string str)//定义时没有缺省值了
{
//function
}

使用场景
有一些参数的值在每次函数调用时都相同,采用参数的缺省值可以是书写变得简洁,编译时,缺省值由编译器自动插入。

建议(规则)
1、参数缺省值只能出现在函数的声明中,而不能出现在定义体中。
例如:
void foo(int x = 0; int y = 0);//正确写法
void foo(int x = 0; int y = 0)//错误写法,缺省值出现在了定义体中
{
}
原因:
(1)函数的实现(定义)本来就与参数是否有缺省值无关。
(2)参数的缺省值有可能会改动,而修改函数的声明比修改函数的定义方便的多。
2、如果函数有多个参数,参数只能从后往前缺省。
例如:
void foo(int x, int y = 0; int z = 0);//正确写法
void foo(int x = 0, int y, int z = 0);//错误写法
使用函数缺省值只让书写变得简洁而未赋予新功能,且使用时需要谨慎,避免产生二义性。
例如:
声明时:
void foo(int x);
void foo(int x, float y = 0);
调用时:
foo(1);//编译时报错,因为两个函数声明都可行,编译器无法选择

你可能感兴趣的:(c++,c语言,c++)