C++ - 函数
函数默认参数
1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值。
2. 如果函数声明有默认值,函数实现的时候就不能有默认参数。函数实现和声明只能一个有默认参数。 (我没事我什么要去写一个函数声明,我又不写在下面)
ps:注意和python里面函数参数的区别。
函数的占位参数
C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置。
函数部分只写了一个数据类型,表示一个占位参数。
#include<iostream> using namespace std; //函数占位参数 ,占位参数也可以有默认参数 void w(int a,int) { cout<<"this is w"<<endl; } int main() { //调用函数的时候,占位参数必须填补 w(10,10); return 0; }
函数重载
作用:函数名可以相同,提高复用性。
函数重载满足条件:
1、同一个作用域下;
2、函数名称相同;
3、函数参数类型不同 或者 个数不同 或者 顺序不同。
注意: 函数的返回值不可以作为函数重载的条件,类型不同可以是数据类型不同,也可以是const int &和int &的不同。
#include<iostream> using namespace std; void w1() { cout<<"调用w1"<<endl; } void w1(int x) { cout<<"调用w1****"<<endl; } int main() { w1(1); // cout<<"调用w1****"<<endl; return 0; }
这个clion可以编译出,但是不对吧应该?

#include<iostream> using namespace std; void w(int x,int y) { cout<<"调用w1"<<endl; } void w1(int y,int x) { cout<<"调用w1****"<<endl; } int main() { w1(1,9); // cout<<"调用w1****"<<endl; return 0; }
输出:调用w1****
函数重载注意事项
1、引用作为重载条件;
2、函数重载碰到函数默认参数。
#include<iostream> using namespace std; //1、引用作为重载条件 void w1(int&a) { cout<<"调用 1"<<endl; } void w1(const int&a) { cout<<"调用 2"<<endl; } //2、函数重载碰到函数默认参数 void w2(int a,int b=10) { cout<<"调用 3"<<endl; } void w2(int a) { cout<<"调用 4"<<endl; } int main() { int a=10; w1(a); // 调用无const(可读可写) w1(10);//调用有const // 如果是无const的话,函数就相当于是int &a=10; 这种语法无法编译 //调用有const的时候,const int &a=10;这样子是可以的 //w2(10); //碰到默认参数产生歧义(二义性),需要避免 //尽量不要加默认参数了吧还是 return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」