C++函数的默认参数,占位,重载

函数的默认参数

void  f(int a=10,int b=20){
cout<<a+b;
}
int main(){
f();//30
}

注意点
1.函数某个位置参数有默认值,则这个位置后的参数都必须有默认值
2.函数的声明有默认参数,则函数的传建便不能有(编译器为了防止二义性,比如构建函数时默认参数是10,声明时又变成20,编译器该信谁?)

函数的占位参数

void f(int b,int){
}
int main{
f(1,2)//占位的也要赋值
}

函数的重载
作用: 函数名可以相同,提高复用性
要求:在全局作用域下 函数名相同,参数类型或参数个数或参数顺序不同。
切记返回类型不作为重载条件
在这里插入图片描述

void f(int a){
cout<<a;
}
void f(int a,int b){
cout<<a+b;
}
int main(){
f(10);//10
f(20,10);//30
}

注意点
1.引用作为重载时

void f( int &a)(
cout<<" int &a";
)
void f(const int &a)(
cout<<"const int &a";
)
int main(){
int a=10;
f(a);//int &a
f(10);//const int &a
}

为神魔f(a)为调用void f(int a)不调用f(const int &a)函数呢?因为a是变量。
那f(10)又为何只调用f(const int &a)函数呢,因为引用指向的是一块内存(地址),10并没有在内存中,而const 可以为开辟一块内存储存10(当一个变量被const限定时,这个变量就是一个只读变量,编译器在内存中开辟一个地方来存放它的值

2.重载遇到默认参数
void f(int a=10){
}
void f(){
}
int main(){
f()//运行时报错,因为编译器不知道选哪个函数
}

发布了83 篇原创文章 · 获赞 44 · 访问量 6966

猜你喜欢

转载自blog.csdn.net/qq_44620773/article/details/104584027