定义一个时间类CTime,,自定义构造函数和析构函数,并具有设置时间函数SetTime()、返回时间函数GetTime(),以及显示当前时间的成员函数ShowTime(),定义重载运算符函数为类的成员函数,其中关系运算符的返回值类型为bool型,算术运算符、赋值以及复合运算符返回值为引用类型,在main函数中定义时间类CTime的对象并进行测试
时间: 2023-06-20 11:06:09 浏览: 92
下面是一个示例代码:
```c++
#include <iostream>
#include <iomanip>
using namespace std;
class CTime {
private:
int hour;
int minute;
int second;
public:
CTime(int h = 0, int m = 0, int s = 0);
~CTime();
void SetTime(int h, int m, int s);
string GetTime();
void ShowTime();
bool operator==(const CTime& t);
bool operator>(const CTime& t);
CTime& operator++(); // 前置++
CTime operator++(int); // 后置++
CTime& operator+=(int s);
};
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() {
stringstream ss;
ss << setfill('0') << setw(2) << hour << ":" << setw(2) << minute << ":" << setw(2) << second;
return ss.str();
}
void CTime::ShowTime() {
cout << GetTime() << endl;
}
bool CTime::operator==(const CTime& t) {
return hour == t.hour && minute == t.minute && second == t.second;
}
bool CTime::operator>(const CTime& t) {
return hour > t.hour || (hour == t.hour && minute > t.minute) || (hour == t.hour && minute == t.minute && second > t.second);
}
CTime& CTime::operator++() {
second++;
if (second >= 60) {
second = 0;
minute++;
if (minute >= 60) {
minute = 0;
hour++;
if (hour >= 24) {
hour = 0;
}
}
}
return *this;
}
CTime CTime::operator++(int) {
CTime temp(*this);
operator++();
return temp;
}
CTime& CTime::operator+=(int s) {
int h = s / 3600;
int m = (s % 3600) / 60;
int ss = s % 60;
hour += h;
minute += m;
second += ss;
if (second >= 60) {
second -= 60;
minute++;
}
if (minute >= 60) {
minute -= 60;
hour++;
}
if (hour >= 24) {
hour -= 24;
}
return *this;
}
int main() {
CTime t1(8, 30, 0);
CTime t2(20, 0, 0);
t1.ShowTime(); // 输出 08:30:00
t2.ShowTime(); // 输出 20:00:00
cout << (t1 == t2) << endl; // 输出 0
cout << (t1 > t2) << endl; // 输出 0
cout << (t2 > t1) << endl; // 输出 1
++t1;
t1.ShowTime(); // 输出 08:30:01
CTime t3 = t2++;
t2.ShowTime(); // 输出 20:00:01
t3.ShowTime(); // 输出 20:00:00
t1 += 3600; // 增加1小时
t1.ShowTime(); // 输出 09:30:01
return 0;
}
```
在这个示例中,CTime类代表一个时间,包含小时、分钟和秒。构造函数用于初始化时间,析构函数目前没有实现任何操作。SetTime函数用于修改时间。GetTime函数返回一个表示时间的字符串,ShowTime函数用于将时间打印到控制台窗口中。
重载运算符函数包括关系运算符(==和>)和算术运算符(前置++、后置++、+=)。关系运算符的返回值类型为bool型,算术运算符和赋值运算符返回值为引用类型,以支持链式表达式。在main函数中,我们可以创建CTime对象并使用这些运算符进行测试。
阅读全文