函数重载
函数名称相同,但函数参数列表必须不同,此处的函数列表也成为函数特征标。特征标不同则表征了,参数数目、类型、以及排列顺序不同。
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 删除。