【C++学习笔记】Step3 重载函数与重载运算符

举报
王建峰 发表于 2021/11/19 02:06:14 2021/11/19
【摘要】 目的:掌握重载的概念,程序实现重载函数和重载运算符的功能 理解:相同函数名的函数或者同一运算符,在不同场合有不同的功能。编译器通过不同的接口,判断执行哪一种功能(重载决策)。1.实现接口;2.根据接口实现对应功能。 码云:https://gitee.com/hinzer/my-notes-of-C_plus   思维导...

目的:掌握重载的概念,程序实现重载函数和重载运算符的功能

理解:相同函数名的函数或者同一运算符,在不同场合有不同的功能。编译器通过不同的接口,判断执行哪一种功能(重载决策)。1.实现接口;2.根据接口实现对应功能。

码云:https://gitee.com/hinzer/my-notes-of-C_plus

 

思维导图

 

代码 main.cpp


  
  1. #include "iostream"
  2. using namespace std;
  3. //测试函数重载
  4. class Hello
  5. {
  6. public:
  7. Hello()
  8. {
  9. }
  10. void sayHello()
  11. {//接口1
  12. cout << "hello hinzer" << endl;
  13. }
  14. void sayHello(string name)
  15. {//接口2
  16. string str = "hello ";
  17. str += name; //拼接字符串
  18. cout << str << endl;
  19. }
  20. private:
  21. };
  22. class Point
  23. {
  24. public:
  25. Point(int x,int y)
  26. {//通过this指针 访问对象属性
  27. this->x = x;
  28. this->y = y;
  29. }
  30. int getX()
  31. {
  32. return this->x;
  33. }
  34. int getY()
  35. {
  36. return this->y;
  37. }
  38. void add(Point p)
  39. {
  40. add(p.getX(),p.getY());
  41. }
  42. void add(int x,int y)
  43. {//将x、y分别累加到对象的x和y
  44. this->x += x;
  45. this->y += y;
  46. }
  47. void operator+=(Point p)
  48. {//将Point p作为参数,实现运算符重载
  49. add(p);
  50. }
  51. private:
  52. //定义坐标
  53. int x,y;
  54. };
  55. int main(int argc, char const *argv[])
  56. {
  57. Hello *p = new Hello();
  58. p->sayHello(); //默认方法
  59. string str = "wangjian";
  60. p->sayHello(str); //实现函数重载
  61. delete p;
  62. Point a(10,10);
  63. a += Point(13,15); //因为Point(13,13)是Point类的对象,所以对 += 进行重载 与 a.operator+=(Point p) 等价
  64. cout << "x:" << a.getX() << endl;
  65. cout << "y:" << a.getY() << endl;
  66. return 0;
  67. }

 

编译运行

 

补充·伪函数

在类A中实现'()'运算符的重载,使类像函数一样使用。

 


  
  1. //测试函数重载
  2. class Hello
  3. {
  4. public:
  5. Hello()
  6. {
  7. }
  8. void sayHello()
  9. {//接口1
  10. cout << "hello hinzer" << endl;
  11. }
  12. void sayHello(string name)
  13. {//接口2
  14. string str = "hello ";
  15. str += name; //拼接字符串
  16. cout << str << endl;
  17. }
  18. void operator()()
  19. {//实现对'()'的重载
  20. cout << "hello __wangjian__" << endl;
  21. }
  22. private:
  23. };

 

编译运行

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

原文链接:blog.csdn.net/feit2417/article/details/92752104

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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