【C++】运算符重载示例一

举报
王博Kings 发表于 2020/12/30 01:09:34 2020/12/30
【摘要】 11.1、11.2 mytime0.h //mytime0.h -- 时间类重载#ifndef MYTIME0_H_#define MYTIME0_H_ class Time{private: int hours; int minutes; public: Time(); Time(int h, int m = 0); void AddMin(int m); void ...

11.1、11.2

mytime0.h


  
  1. //mytime0.h -- 时间类重载
  2. #ifndef MYTIME0_H_
  3. #define MYTIME0_H_
  4. class Time
  5. {
  6. private:
  7. int hours;
  8. int minutes;
  9. public:
  10. Time();
  11. Time(int h, int m = 0);
  12. void AddMin(int m);
  13. void AddHr(int h);
  14. // 重新设置时间
  15. void Reset(int h = 0, int m = 0);
  16. Time Sum(const Time & t) const;
  17. void Show() const;
  18. ~Time();
  19. };
  20. #endif

mytime0.cpp


  
  1. // mytime0.cpp -- 类的实现
  2. #include<iostream>
  3. #include "mytime0.h"
  4. Time::Time()
  5. {
  6. hours = minutes = 0;
  7. }
  8. Time::Time(int h, int m)
  9. {
  10. hours = h;
  11. minutes = m;
  12. }
  13. void Time::AddMin(int m)
  14. {
  15. minutes += m;
  16. hours += minutes / 60;
  17. minutes %= 60;
  18. }
  19. void Time::AddHr(int h)
  20. {
  21. hours += h;
  22. }
  23. void Time::Reset(int h, int m)
  24. {
  25. hours = h;
  26. minutes = m;
  27. }
  28. //参数设为引用是为了提高效率
  29. //返回值不能是引用,否则由于是局部变量,一会就删除不存在了
  30. //而Time在删除现在的sum之前会拷贝副本给调用的
  31. Time Time::Sum(const Time & t) const
  32. {
  33. Time sum;
  34. sum.minutes = minutes + t.minutes;
  35. sum.hours = hours + t.hours + sum.minutes / 60;
  36. sum.minutes %= 60;
  37. return sum;
  38. }
  39. void Time::Show() const
  40. {
  41. std::cout << hours << "hours, " << minutes << " minutes";
  42. }
  43. Time::~Time()
  44. {
  45. }

usetime0.cpp


  
  1. //usetime0.cpp -- 使用第一个版本的Time类
  2. //记得和mytime0类编译
  3. #include<iostream>
  4. #include"mytime0.h"
  5. int main()
  6. {
  7. using std::cout;
  8. using std::endl;
  9. Time planning;
  10. Time coding(2, 40);
  11. Time fixing(5, 55);
  12. Time total;
  13. cout << "计划时间是:";
  14. planning.Show();
  15. cout << endl;
  16. cout << "代码实际时间是:";
  17. coding.Show();
  18. cout << endl;
  19. cout << "调整时间是:";
  20. fixing.Show();
  21. cout << endl;
  22. total = coding.Sum(fixing);
  23. cout << "coding.Sum(fixing) = ";
  24. total.Show();
  25. cout << endl;
  26. return 0;
  27. }

运行结果

程序解读

其实我已经将重点的标注到程序里了,但是考虑大家未必认真看程序,还是说明有几个重要的地方要注意

 

 

文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。

原文链接:kings.blog.csdn.net/article/details/99291855

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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