运算符重载
来源:互联网 发布:东方网络联系电话 编辑:程序博客网 时间:2024/06/06 13:12
运算符重载
函数重载保证用户能够定义多个名称相同但是参数列表不同的函数,希望用户能够通过同名的函数完成相同的基本操作。
运算符重载允许C++赋予运算符多种含义,而C++允许将运算符重载扩展到用于自定义的类型。例如允许两个类对象相加+。
时间Time类
类的声明
//// Created by Rdw on 2017/3/9.//#ifndef PROJECT5_TIME_H#define PROJECT5_TIME_Hclass Time {private: int hour; int minute;public: Time();//默认构造函数 Time(int h , int m);//构造函数 ~Time();//析构函数 void show() const; void reset(int h , int m);};#endif //PROJECT5_TIME_H
类的定义
//// Created by Rdw on 2017/3/9.//#include "Time.h"#include <iostream>using namespace std;Time::Time() {}Time::Time(int h, int m) { hour = h; minute = m;}Time::~Time() {}void Time::reset(int h, int m) { hour = h; minute = m;}void Time::show() const { cout << hour << "hours " << minute << "minutes" << endl;}
类的使用
#include <iostream>#include "Time.h"using namespace std;int main() { Time time1 = Time(14 , 46); time1.show(); Time time2(8 , 30); time2.show(); time1.reset(7 , 0); time1.show();}
测试结果
E:\Project5\cmake-build-debug\Project5.exe14hours 46minutes8hours 30minutes7hours 0minutesProcess finished with exit code 0
算术运算符重载
算术运算符包括一元正号(+)、一元负号(-)、乘法(*)、除法(/),求余(%),加法(+),减法(-)。
运算符函数的声明
friend Time operator+(const Time &object1 , const Time &object2);
运算符函数的定义
Time operator+(const Time &object1, const Time &object2) { Time sum; int temp; temp = (object1.hour * 60 + object1.minute) + (object2.hour * 60 + object2.minute); sum.hour = temp / 60; sum.minute = temp % 60; return sum;}
运算符函数的使用
#include <iostream>#include "Time.h"using namespace std;int main() { Time time1 = Time(14 , 46); time1.show(); Time time2(8 , 30); time2.show(); time1.reset(7 , 0); time1.show(); Time time3; time3 = time1 + time2; time3.show();}
测试结果
E:\Project5\cmake-build-debug\Project5.exe14hours 46minutes8hours 30minutes7hours 0minutes15hours 30minutesProcess finished with exit code 0
项目代码
//// Created by Rdw on 2017/3/9.//#ifndef PROJECT5_TIME_H#define PROJECT5_TIME_Hclass Time {private: int hour; int minute;public: Time();//默认构造函数 Time(int h , int m);//构造函数 ~Time();//析构函数 void show() const; void reset(int h , int m); /*重载算术运算符+*/ friend Time operator+(const Time &object1 , const Time &object2); friend Time operator-(const Time &object1 , const Time &object2); friend Time operator*(const Time &object1 , const Time &object2); friend Time operator/(const Time &object1 , const Time &object2);};#endif //PROJECT5_TIME_H
//// Created by Rdw on 2017/3/9.//#include "Time.h"#include <iostream>using namespace std;Time::Time() {}Time::Time(int h, int m) { hour = h; minute = m;}Time::~Time() {}void Time::reset(int h, int m) { hour = h; minute = m;}void Time::show() const { cout << hour << "hours " << minute << "minutes" << endl;}Time operator+(const Time &object1, const Time &object2) { Time sum; int temp; temp = (object1.hour * 60 + object1.minute) + (object2.hour * 60 + object2.minute); sum.hour = temp / 60; sum.minute = temp % 60; return sum;}Time operator-(const Time &object1, const Time &object2) { Time sub; int temp; temp = (object1.hour * 60 + object1.minute) - (object2.hour * 60 + object2.minute); sub.hour = temp / 60; sub.minute = temp % 60; return sub;}Time operator*(const Time &object1, const Time &object2) { Time mult; int temp; temp = (object1.hour * 60 + object1.minute) * (object2.hour * 60 + object2.minute); mult.hour = temp / 60; mult.minute = temp % 60; return mult;}Time operator/(const Time &object1, const Time &object2) { Time div; int temp; temp = (object1.hour * 60 + object1.minute) / (object2.hour * 60 + object2.minute); div.hour = temp / 60; div.minute = temp % 60; return div;}
#include <iostream>#include "Time.h"using namespace std;int main() { Time time1 = Time(14 , 46); time1.show(); Time time2(8 , 30); time2.show(); time1.reset(7 , 0); time1.show(); Time time3; time3 = time1 + time2; time3.show(); Time time4 = time3 - time2; time4.show(); Time time5 = time1 * time2; time5.show(); Time time6 = time5 / time1; time6.show();}
E:\Project5\cmake-build-debug\Project5.exe14hours 46minutes8hours 30minutes7hours 0minutes15hours 30minutes7hours 0minutes3570hours 0minutes8hours 30minutesProcess finished with exit code 0
0 0
- 运算符重载 [++,--,+,<<; &&,||(不可重载)]
- 重载之运算符重载
- 重载赋值运算符
- C++运算符重载
- 运算符重载
- 运算符重载总结
- 运算符重载例子
- 运算符重载
- 运算符重载
- 基础:运算符重载
- 运算符重载
- 运算符重载
- 重载赋值运算符
- C#运算符重载
- C++-运算符重载
- 重载赋值运算符
- 运算符重载
- 有关运算符重载
- spring整合hibernate中的动态代理问题
- 去掉重复数组的方法
- iOS Block与self的那点事
- mysql数据库(二)参数说明
- 链表基础题大全(一)
- 运算符重载
- java中集合之间的运算优雅方式
- Unable to load native-hadoop library for your platform
- MongoDB初探系列之三:MongoDB用户权限操作
- 紫书章七例题 1——UVA 725 Division
- mybatis foreach方法遍历对象
- IntelliJ使用指南—— 导入Eclipse的Web项目
- Effective C++第一章
- Intellij idea2016创建Maven的web项目