前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++函数重载详解

C++函数重载详解

作者头像
用户7886150
修改2021-02-03 10:40:08
6020
修改2021-02-03 10:40:08
举报
文章被收录于专栏:bit哲学院

参考链接: 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) 

同名不同参返回类型可以不同,特征标必须不同(特征标指参数类型)编译器自动调用最匹配的重载函数重载时拒绝标准类型匹配

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档