基本概念
在C++中允许使用函数重载(函数多态)。简单来说函数重载类似于我们平时所说的多义词。既能够使用多个同名函数,只要他们拥有不同的特征标(指函数的参数列表,包括参数数目、类型和排列顺序)。通过函数重载可以用使用同一个函数名来实现多个功能。
下面列举几种可以使用函数重载的情况
eg0:
void print(int x);
void print(const int x);//可以重载
void print(long x); //可以重载,因为参数类型不同
void print(int x,char y);//可以重载,因为参数数目不同
void print(char x,int y);//可以重载,因为参数顺序不同
不能对函数进行重载的情况
eg1:
void print(int x);
void print(int & x);//类型引用和原类型视为同一个特征标,因此不能对函数进行重载
eg2:
int print(int x);
long print(int x);//返回类型不同,特征标相同,不能对函数进行重载
编译器对函数原型的选择
对于以下三个函数原型
void print(short x);//函数1
void print(long x);//函数2
void print(int x,char y);//函数3
使用重载函数时,编译器根据传递给函数的参数来决定调用哪个函数原型。
print(1);//调用函数1
print(long(2));//调用函数2
print(3,'x');//调用函数3
如果出现参数和所有函数原型都不匹配的情况,会在不引起混乱的情况下进行强制转换
print(char 'x',char y);//调用函数3
如果有多种转换方式对传入的参数可以使用,将会引起混乱,在这种情况下编译将报错
print(char x);//错误,编译器无法判断将调用函数1还是函数2
网友评论