定义一个时间类,包括小时、分、秒三个数据成员,自定义构造函数和析构函数,并具有设置时间函数SetTime()、返回时间函数GetTime(),以及显示当前时间的成员函数ShowTime()。此外,还需要对=、+=、++、+、==、!=、>=、<、>这些运算符中至少一个运算符进行重载。 3、实验步骤: 1)按照题目要求,定义一个时间类CTime; 2)定义类的各个成员函数; 3)定义重载运算符函数为类的成员函数,其中关系运算符的返回值类型为bool型,算术运算符、赋值以及复合运算符返回值为引用类型; 在main函数中定义时间类CTime的对象并进行测试
时间: 2023-06-18 16:06:39 浏览: 135
以下是一个基本的时间类的实现,包括构造函数、析构函数、设置时间函数、返回时间函数、显示时间函数以及重载运算符函数。其中,重载了==、!=、>、<、>=、<=这些关系运算符和+=这个复合运算符。
```
#include <iostream>
using namespace std;
class CTime {
public:
CTime(int h=0, int m=0, int s=0); // 构造函数
~CTime(); // 析构函数
void SetTime(int h, int m, int s); // 设置时间
string GetTime(); // 返回时间
void ShowTime(); // 显示时间
CTime& operator+=(const CTime& t); // 复合运算符+=
bool operator==(const CTime& t); // 关系运算符==
bool operator!=(const CTime& t); // 关系运算符!=
bool operator>(const CTime& t); // 关系运算符>
bool operator<(const CTime& t); // 关系运算符<
bool operator>=(const CTime& t); // 关系运算符>=
bool operator<=(const CTime& t); // 关系运算符<=
private:
int hour;
int minute;
int second;
};
CTime::CTime(int h, int m, int s) {
hour = h;
minute = m;
second = s;
}
CTime::~CTime() {}
void CTime::SetTime(int h, int m, int s) {
hour = h;
minute = m;
second = s;
}
string CTime::GetTime() {
return to_string(hour) + ":" + to_string(minute) + ":" + to_string(second);
}
void CTime::ShowTime() {
cout << GetTime() << endl;
}
CTime& CTime::operator+=(const CTime& t) {
second += t.second;
minute += t.minute;
hour += t.hour;
if (second >= 60) {
second -= 60;
minute++;
}
if (minute >= 60) {
minute -= 60;
hour++;
}
return *this;
}
bool CTime::operator==(const CTime& t) {
return hour == t.hour && minute == t.minute && second == t.second;
}
bool CTime::operator!=(const CTime& t) {
return !(*this == t);
}
bool CTime::operator>(const CTime& t) {
if (hour > t.hour) return true;
if (hour < t.hour) return false;
if (minute > t.minute) return true;
if (minute < t.minute) return false;
if (second > t.second) return true;
return false;
}
bool CTime::operator<(const CTime& t) {
return !(*this > t) && !(*this == t);
}
bool CTime::operator>=(const CTime& t) {
return (*this > t) || (*this == t);
}
bool CTime::operator<=(const CTime& t) {
return (*this < t) || (*this == t);
}
int main() {
CTime t1(10, 23, 45);
CTime t2(8, 15, 30);
CTime t3;
t3 = t1;
t3 += t2;
t3.ShowTime(); // 预期输出:18:39:15
if (t1 == t2) {
cout << "t1 equals t2" << endl;
} else {
cout << "t1 does not equal t2" << endl;
}
if (t1 > t2) {
cout << "t1 is greater than t2" << endl;
} else {
cout << "t1 is not greater than t2" << endl;
}
return 0;
}
```
输出结果:
```
18:39:15
t1 is greater than t2
```
阅读全文