首页 > 代码库 > 【Cpp】考点·函数重载
【Cpp】考点·函数重载
一、什么是函数重载
函数重载(overloaded)是指,在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数。这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。
举个栗子
1 #include<iostream> 2 using namespace std; 3 4 void print(int i) 5 { 6 cout << "print a integer: " << i << endl; 7 } 8 9 void print(string str) 10 { 11 cout << "print a string: " << str << endl; 12 } 13 14 int main() 15 { 16 print(12); 17 print("HELLO"); 18 return 0; 19 }
通过上面的代码实现,可以根据print的参数去决定调用print(int)还是print(string)。
如果没有函数重载机制,上述的函数需要进行不同的命名,使用时也需要进行区别。这样很不友好。
类的构造函数跟类名相同,也就是说:构造函数都同名。如果没有函数重载机制,想要实例化不同的对象很麻烦。
操作符重载本质上就是函数重载。
二、重载函数的调用匹配
按照依次按照以下规则来判断
- 精确匹配:参数匹配而不做转换,或者只是形式上的转换,如数组名到指针、函数名到指向函数的指针、T到const T;
- 提升匹配:即整数提升(如bool到int、char到int、short到int、float到double;
- 使用标准转换匹配:(如int到double、double到int、double到long double、Derived *到Base *、 T*到void*、int到unsigned int;
- 使用用户自定义匹配
- 使用省略号匹配:类似pringf中省略号参数
09:49:10 函数重载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。