码迷,mamicode.com
首页 > 其他好文 > 详细

【Cpp】考点·函数重载

时间:2014-05-29 01:31:25      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:style   c   class   blog   code   java   

 一、什么是函数重载

函数重载(overloaded)是指,在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数。这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。

举个栗子

bubuko.com,布布扣
 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 }
bubuko.com,布布扣

通过上面的代码实现,可以根据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  函数重载

【Cpp】考点·函数重载,布布扣,bubuko.com

【Cpp】考点·函数重载

标签:style   c   class   blog   code   java   

原文地址:http://www.cnblogs.com/solare/p/3754463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!