写点什么

[C++ 总结记录] 函数相关细节注意点

用户头像
图解AI
关注
发布于: 2021 年 03 月 24 日
[C++总结记录]函数相关细节注意点

1.函数默认参数(默认值)

返回值 函数名(参数=默认值){}

  void test(int a,int b, int c=100){      cout << "函数默认值";  }// 调用test(12,14);//正确,不传,默认采用默认值test(12,46,890);//正确,真实值890会覆盖默认值100
复制代码

a. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值

  void test(int a,int b = 90, int c=100){      cout << "函数默认值";  }
// 错误写法 // void test(int a,int b = 90, int c);//错误,c应该有默认值
复制代码


b. 果函数声明有默认值,函数实现的时候就不能有默认参数

// 函数申明void test(int a,int b = 90, int c=100);
// 函数实现 void test(int a,int b = 90, int c){ cout << "函数默认值"; }
复制代码

2. 函数占位参数

C++当中函数形参列表中允许有占位参数,位参数只有参数类型声明,而没有参数名声明;

但是函数调用时,必须填补该位置。

 void test(int a,int) {     cout << a << endl; }
//调用 test(10,1);//占位参数必须传
复制代码


3. 给占位参数设置默认参数

C++当中函数形参列表中允许有占位参数,位参数只有参数类型声明,而没有参数名声明;

但是函数调用时,必须填补该位置。

 void test(int a,int = 0) { //给占位参数设置默认值     cout << a << endl; }
//调用 test(10);//
复制代码

4.占位参数的意义

>a.以后程序的扩展留下线索


>b.兼容 C 语言程序中可能出现的不规范写法


4.函数的重载

同一个作用域


函数名相同


函数参数类型不同或者个数不同或者顺序不同


注意:函数的返回值不可用作为函数重载的条件


//   1.同一作用域void test(){}void test(int a){}void test(int a,string b){} //参数个数不同void test(string a,int b){} //参数顺序不同
复制代码


5. 引用作为函数重载参数


void test(int &a){}void test(const int &a){}

int a = 10;test(a);//调用的是int &atest(10);//调用的是const int &a,原因:const int &a = 10;可以正常赋值,等价于 const int * const a = 10;
复制代码

注意:const int &a = 10;正确 等价于 const int * const a = 10


6. 函数重载遇到默认参数

void test(int a,int b = 10){}void test(int a){}
test(10);//错误,这里调用产生了歧义,需要避免这样写
复制代码


发布于: 2021 年 03 月 24 日阅读数: 9
用户头像

图解AI

关注

技术成就未来 2021.03.22 加入

致力于:机器学习、深度学习、数据分析、算法、架构、C/C++、Rust、HTML5/webApp、Go、Python、Lua...

评论

发布
暂无评论
[C++总结记录]函数相关细节注意点