运算符重载

来源:互联网 发布:东方网络联系电话 编辑:程序博客网 时间: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
原创粉丝点击