如何对C 进行函数重载
创始人
2024-06-21 11:00:55
0

下面对C++ 函数重载进行学习探讨,C++ 函数重载是指同一个函数名可以对应着多个函数的实现,如果要对编译器进行函数重载时话,那么就要使用extern "C"来说明。

另一个实现是求两个浮点型数之和,再一个实现是求两个复数的和。每种实现对应着一个函数体,这些函数的名字相同,但是函数的参数的类型不同。这就是函数重载的概念。函数重载在类和对象的应用尤其重要。

函数重载要求编译器能够***地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。确定函数实现时,要求从函数参数的个数和类型上来区分。这就是说,进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。否则,将无法实现重载。

参数类型上不同的重载函数下面举一个在参数类型不同的重载函数的例子:

  1. #include  
  2. int add(int, int);  
  3. double add(double, double);  
  4.  
  5. void main()  
  6. {  
  7. cout< cout< }  
  8.  
  9. int add(int x, int y)  
  10. {  
  11. return x+y;  
  12. }  
  13.  
  14. double add(double a, double b)  
  15. {  
  16. return a+b;  

该程序中,main()函数中调用相同名字add的两个函数,前边一个add()函数对应的是两个int型数求和的函数实现,而后边一个add()函数对应的是两个double型数求和的函数实现。这便是函数的重载。

下面举一个在参数个数上不相同的重载函数的例子:

  1. #include  
  2. int min(int a, int b);  
  3. int min(int a, int b, int c);  
  4. int min(int a, int b, int c, int d);  
  5.  
  6. void main()  
  7. {  
  8. cout< cout< }  
  9.  
  10. int min(int a, int b)  
  11. {  
  12. return a }  
  13.  
  14. int min(int a, int b, int c)  
  15. {  
  16. int t = min(a, b);  
  17. return min(t,c);  
  18. }  
  19.  
  20. int min(int a, int b, int c, int d)  
  21. {  
  22. int t1 = min(a, b);  
  23. int t2 = min(c, d);  
  24. return min(t1, t2);  

该程序中出现了C++ 函数重载函数名min对应有三个不同的实现,函数的区分依据参数个数不同,这里的三个函数实现中,参数个数分别为2,3和4,在调用函数时根据实参的个数来选取不同的函数实现。

C++ 函数重载在类和对象应用比较多,尤其是在类的多态性中。在以后我们将碰到更多的在类型不同的函数重载,尤其是在结合类的继承性和指针类型的不同,而这些都是我们以后用VC编程中经常要用到的。

【编辑推荐】

  1. 简介学习C++总结之谈
  2. C++函数进行学习探索总结笔记
  3. C++类库设计的基本构思与方法
  4. C++语言真的还有市场价值?
  5. C++类库设计的基本构思与方法

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...