当前位置:   article > 正文

c++中函数的默认参数_c++函数默认参数

c++函数默认参数

目录

1、函数的默认参数定义:

2、函数的占位参数


1、函数的默认参数定义:

c++在声明函数原型的时候可以为一个或者多个参数指定默认(缺省)的参数值,当函数调用的时候如果没有指定这个值,编译器会自动用默认值代替。

代码示例:

  1. //函数的默认参数,指定x默认值为10,y默认值为20
  2. int add(int x = 10, int y = 20) {
  3. return x + y;
  4. }
  5. void test() {
  6. cout << "x+y=" << add(100,200) << endl;//输出200
  7. cout << "x+y=" << add(100) << endl;//输出120
  8. cout << "x+y=" << add() << endl;//30
  9. }
  10. int main() {
  11. test();
  12. }

运行结果:

总结:

1)、当给函数的参数指定默认值时,在调用函数的时候,如果传入实参,那么各自的默认参数将无效。

2)、如果调用函数的时候,若果某个参数未被传参,没有被传参的参数编译器将调用其默认值。

3)、如果调用函数的时候,所有参数都未被传参,编译器自动调用参数默认值。

注意点:

1、函数的默认参数从左向右,如果一个参数设置了默认参数,那么这个参数之后的参数都必须设置默认参数。

  1. //函数的默认参数从左向右
  2. //int func(int x,int y=20,int z) {
  3. // err 只要有一个参数赋于默认值,那么右边的剩下参数都要赋于默认值
  4. // return x + y + z;
  5. //}
  6. int func(int x,int y=20,int z=100) {
  7. return x + y + z;
  8. }
  9. void test() {
  10. cout << "func=" << func(100,200)<<endl;
  11. cout << "func=" << func(100)<<endl;//220
  12. cout << "func=" << func()<<endl;//err 因为x没有默认值,这样会报缺少参数的错
  13. }
  14. int main() {
  15. test();
  16. }

运行结果:

2、如果函数声明和函数定义分开写,函数声明和函数定义不能同时设置默认参数。(建议函数声明处设置参数)

代码示例:

main.c:

  1. int func(int x, int y = 20, int z = 100) {
  2. return x + y + z;
  3. }

test.c:

  1. //函数声明
  2. extern int func(int x, int y = 30,int z=200);
  3. void test() {
  4. cout << "func=" << func(100, 100) << endl;
  5. }
  6. int main() {
  7. test();
  8. }

运行结果:

总结:从上面代码运行结果可以看出来,最终的结果是编译器调用函数声明处指定的默认值,而不是函数定义时参数的默认值。因此呢一般在函数声明处设置缺省参数。

注意:分文件时,函数定义处的默认参数是无效的,例如在上面main.c中函数中参数的值是无效的,当分文件时,在函数声明处给默认参数。

2、函数的占位参数

c++中,函数的参数只有类型名,没有形参名,这参数就是占位参数。由于有类型名,所以函数调用的时候必须给占位参数传参。由于没有形参名,所以函数内部是无法使用占位参数

  1. void func(int x,int y,int) {
  2. cout << "x=" << x << ",y=" << y << endl;
  3. }
  4. void test() {
  5. func(10,20,30);
  6. //func(10, 20, "cccc");err "cccc"与int类型不符
  7. }
  8. int main() {
  9. test();
  10. }

运行结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/798346
推荐阅读
相关标签
  

闽ICP备14008679号