【C++深度剖析学习总结】 22 类中的函数重载

举报
CodeAllen 发表于 2021/10/30 00:02:20 2021/10/30
【摘要】 1.函数重载回顾 函数重载的本质为相互独立的不同函数 C++中通过函数名和函数参数确定函数调用 无法直接通过函数名得到重载函数的入口地址 函数重载必然发生在同一个作用域中   2.类中的重载 类中的成员函数可以进行重载 构造函数的重载 普通成员函数的重载 静态成员函数的重载 问题:全局函数,普通成员函数以...

1.函数重载回顾

函数重载的本质为相互独立的不同函数

C++中通过函数名和函数参数确定函数调用

无法直接通过函数名得到重载函数的入口地址

函数重载必然发生在同一个作用域中

 

2.类中的重载

类中的成员函数可以进行重载

构造函数的重载

普通成员函数的重载

静态成员函数的重载

问题:全局函数,普通成员函数以及静态成员函数之间是否可以构成重载?

 

3.万变不离其宗

1.重载函数的本质为多个不同的函数

2.函数名和参数列表是唯一的表示

3.函数重载必须发生在同一个作用域中 (类和全局就不行,因为作用域已经不同了)

 

4.深度的意义---现在提倡代码自助式,即不需要注释来说明如何调用

重载的意义

通过函数名对函数功能进行提示

通过参数列表对函数用法进行提示

扩展系统中已经存在的函数功能


  
  1. #include <iostream>
  2. using namespace std;
  3. template<class T> void Swap(T &a, T &b); //模板①:交换基本类型的值
  4. template<typename T> void Swap(T a[], T b[], int len); //模板②:交换两个数组
  5. void printArray(int arr[], int len); //打印数组元素
  6. int main(){
  7. //交换基本类型的值
  8. int m = 10, n = 99;
  9. Swap(m, n); //匹配模板①
  10. cout<<m<<", "<<n<<endl;
  11. //交换两个数组
  12. int a[5] = { 1, 2, 3, 4, 5 };
  13. int b[5] = { 10, 20, 30, 40, 50 };
  14. int len = sizeof(a) / sizeof(int); //数组长度
  15. Swap(a, b, len); //匹配模板②
  16. printArray(a, len);
  17. printArray(b, len);
  18. return 0;
  19. }
  20. template<class T> void Swap(T &a, T &b){
  21. T temp = a;
  22. a = b;
  23. b = temp;
  24. }
  25. template<typename T> void Swap(T a[], T b[], int len){
  26. T temp;
  27. for(int i=0; i<len; i++){
  28. temp = a[i];
  29. a[i] = b[i];
  30. b[i] = temp;
  31. }
  32. }
  33. void printArray(int arr[], int len){
  34. for(int i=0; i<len; i++){
  35. if(i == len-1){
  36. cout<<arr[i]<<endl;
  37. }else{
  38. cout<<arr[i]<<", ";
  39. }
  40. }
  41. }

 

小结

类的成员函数之间可以进行重载

重载必须发生在同一个作用域中

全局函数和成员函数不能构成重载关系

重载的意义在于扩展已经存在的功能

文章来源: allen5g.blog.csdn.net,作者:CodeAllen的博客,版权归原作者所有,如需转载,请联系作者。

原文链接:allen5g.blog.csdn.net/article/details/117400800

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。