C++函数重载详解

函数重载

函数名称相同,但函数参数列表必须不同,此处的函数列表也成为函数特征标。特征标不同则表征了,参数数目、类型、以及排列顺序不同。

void print(const char* str,int width);
void print(double d,int width);
void print(long l,int width);
void print(int i,int width);
  •  在具体调用这些函数时,编译器会根据特征标完成对应的函数匹配,并完成调用,不过函数重载后,c++会拒绝类型转换。例如:
unsigned int year = 3320;
print(year,6);
//编译器将无法选择调用上述任何一个函数,若是只有一个print的函数原型,c++会支持转换。
  •  此外带const参数的函数原型可以调用非const值和const值。
void add(const int a, const int b);

const int a = 2;
const int b = 2;
int c = 2;
int d = 2;

add(a,b);
add(c,d);
  •  函数重载时必须保证,函数特征标不同,而返回类型可以不同。
long gronk(int n ,float m);
double gronk(int n ,float m);//互斥!!!对于编译器无法知道要调用何者

long gronk(int n ,float m);
double gronk(float n ,float m);//可!
  •  重载调用最匹配的版本。
void staff(double &rs);
void staff(const double &rs);
void staff(double &&rs);


double x =35.5;
const double y = 32.0;

staff(x);//staff(double &rs)
staff(y);//staff(const double &rs)
staff(x+y);//staff(double &&rs)
  • 同名不同参
  • 返回类型可以不同,特征标必须不同(特征标指参数类型)
  • 编译器自动调用最匹配的重载函数
  • 重载时拒绝标准类型匹配
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值