缺省参数与函数重载

一.缺省参数:
形参a和b都带有默认值
用户用掉该函数时,没传参,就用默认值。传参就用所传值。

1,分类:
1.全缺省参数:每个参数都带有默认值
void T(int a=1,int b=2,int c=3){
cout<<“a=”<<a<<endl;
cout<<“b=”<<b<<endl;
cout<<“c=”<<c<<endl;
int main(){
T(); // 1 2 3
T(10); // 10 2 3
T(10,20); // 10 20 3
T(10,20,30) // 10 20 30

2.半缺省参数:必须从右往左依次给出,不能间隔着给
void T(int a=1,int b=2,int c=3){
cout<<a<<""<<b<<""<< c<<endl;

e.g.//以下三个场景
void T(int a,int b=2,int c=3) 代码可以编译
void T(int a=1,int b,int c=3) 不可以
void T(int a=1,int b=2,int c) 不可以
T(10)

3.缺省参数可以再声明位置给出,也可以在定义位置给出,但是不
能同时两个位置给出。 最好在声明位置给出
e.g.
void T(int a=10)

void T(int a=20){
cout <<a<<endl;
}

二.函数重载:
1.概念:在相同作用域中函数名字相同参数列表不同
e.g.
void T(){
}
int T(){
return 0;
} 不能重载,参数列表相同,不能重载。

注意:如果两个函数仅仅是返回类型不同,则不能构重载

2.参数列表不同体现:
1.参数个数不同。
2.参数列表不同。
3.参数类型次序不同
void T()
void T(int a )
void T(char c)
void T(int a ,char c)
void T(char, int a )

3.函数重载的调用原理:
编译器在编译阶段,会对函数实参类型进行推演,根据推演的实际结果找类型
匹配的函数进行调用。有匹配类型,直接调用。如果没有,则会隐式类型转换,
转后有对应的就调用,没有对应就报错。

e.g.
int add(int lefe ,int right){
return left+ringht;
}
double add(double lefe ,double right){
return left+ringht;
}

int main(){
add(10,20);
add(1.2,3.4);
add(‘1’,‘2’)// char和int 直接隐式类型转换->add(int, int )
add(“hello”,“wordl”)// char*,char*—>无char*且无法隐式类型转换则报错
add(1,1.2)//转换后有add(int,int)有add(double,double)发现两个都可以,编译器不知道调用哪个,则报错。
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值