默认参数、占位参数
我们先看一个普通的函数
int sum( int a, int b) { return a + b; }
这是一个普通的函数,当我要调用他时传入2个参数 a 和 b 返回两个数的和。
默认参数:
C++中可以在函数声明时为参数提供一个默认值,当函数调用时没有指定这个参数的值,编译器会自动用默认值代替
那么看一下下面这个例子
int sum( int a, int b = 7) { return a + b; } int main(int argc, char const *argv[]) { int a(5); int b(7); std::cout<<sum(a)<<std::endl; return 0; }
在调用函数的时候,我只给传入了一个参数,另外一个没有传,但是程序仍然返回给了我一个值
当然了 我们也可以像刚才那样用 sum(a,b) 这样调用,同样的也会返回一个 12
因为我在定义函数时,给第二个参数一个默认的参数 7
当我没有对这个参数赋值时,编译器会自动给他赋为7
占位参数:
占位参数只有参数类型声明,而没有参数名声明一般情况下,在函数体内部无法使用占位参数
举个栗子
int sum( int a, int b,int) { return a + b ; } int main(int argc, char const *argv[]) { int a(5); int b(7),c(6); std::cout<<sum(a,b,1)<<std::endl; return 0; }
函数定义的时候多加了一个 int 但是我没有给 int 一个明确的形参,在调用的时候随便给了一个值
占位参数的意义:为了以后程序扩展留下线索,同时兼容c的不规范写法
也可以给占位参数一个默认参数
int sum( int a, int b,int = 0) { return a + b ; } int main(int argc, char const *argv[]) { int a(5); int b(7),c(6); std::cout<<sum(a,b)<<std::endl; return 0; }