1)定义一个时间类CTime,以及类的各个成员函数包括小时、分、秒三个数据成员,自定义构造函数和析构函数,并具有设置时间函数SetTime()、返回时间函数GetTime(),以及显示当前时间的成员函数ShowTime(),定义重载运算符函数为类的成员函数,其中关系运算符的返回值类型为bool型,算术运算符、赋值以及复合运算符返回值为引用类型,在main函数中定义时间类CTime的对象并进行测试。
时间: 2023-06-12 08:07:51 浏览: 172
MFC常用类、成员函数、数组类、Cstring类、CTime类、CPoint类
5星 · 资源好评率100%
下面是类定义和实现代码:
```cpp
class CTime {
public:
CTime(int h = 0, int m = 0, int s = 0); // 构造函数
~CTime(); // 析构函数
void SetTime(int h, int m, int s); // 设置时间函数
string GetTime() const; // 返回时间函数
void ShowTime() const; // 显示当前时间函数
// 重载运算符函数
CTime& operator=(const CTime& t);
CTime& operator+=(const CTime& t);
CTime& operator-=(const CTime& t);
bool operator==(const CTime& t) const;
bool operator!=(const CTime& t) const;
bool operator<(const CTime& t) const;
bool operator>(const CTime& t) const;
bool operator<=(const CTime& t) const;
bool operator>=(const CTime& t) const;
private:
int m_hour; // 小时
int m_minute; // 分钟
int m_second; // 秒钟
};
// 构造函数
CTime::CTime(int h, int m, int s) {
m_hour = h;
m_minute = m;
m_second = s;
}
// 析构函数
CTime::~CTime() {}
// 设置时间函数
void CTime::SetTime(int h, int m, int s) {
m_hour = h;
m_minute = m;
m_second = s;
}
// 返回时间函数
string CTime::GetTime() const {
return to_string(m_hour) + ":" + to_string(m_minute) + ":" + to_string(m_second);
}
// 显示当前时间函数
void CTime::ShowTime() const {
cout << GetTime() << endl;
}
// 重载运算符函数
// 赋值运算符
CTime& CTime::operator=(const CTime& t) {
m_hour = t.m_hour;
m_minute = t.m_minute;
m_second = t.m_second;
return *this;
}
// 加等运算符
CTime& CTime::operator+=(const CTime& t) {
m_second += t.m_second;
m_minute += m_second / 60 + t.m_minute;
m_second %= 60;
m_hour += m_minute / 60 + t.m_hour;
m_minute %= 60;
return *this;
}
// 减等运算符
CTime& CTime::operator-=(const CTime& t) {
m_second -= t.m_second;
if (m_second < 0) {
m_second += 60;
m_minute--;
}
m_minute -= t.m_minute;
if (m_minute < 0) {
m_minute += 60;
m_hour--;
}
m_hour -= t.m_hour;
return *this;
}
// 相等运算符
bool CTime::operator==(const CTime& t) const {
return (m_hour == t.m_hour) && (m_minute == t.m_minute) && (m_second == t.m_second);
}
// 不等运算符
bool CTime::operator!=(const CTime& t) const {
return !(*this == t);
}
// 小于运算符
bool CTime::operator<(const CTime& t) const {
if (m_hour < t.m_hour) {
return true;
} else if (m_hour > t.m_hour) {
return false;
}
if (m_minute < t.m_minute) {
return true;
} else if (m_minute > t.m_minute) {
return false;
}
return m_second < t.m_second;
}
// 大于运算符
bool CTime::operator>(const CTime& t) const {
return !(*this < t || *this == t);
}
// 小于等于运算符
bool CTime::operator<=(const CTime& t) const {
return (*this < t) || (*this == t);
}
// 大于等于运算符
bool CTime::operator>=(const CTime& t) const {
return !(*this < t);
}
```
在 `main` 函数中,可以按照如下方式进行测试:
```cpp
int main() {
CTime t1(10, 20, 30); // 定义时间对象t1,初始值为10:20:30
CTime t2(1, 2, 3); // 定义时间对象t2,初始值为1:2:3
t1.ShowTime(); // 输出t1的当前时间
t2.ShowTime(); // 输出t2的当前时间
t1 += t2; // 计算t1加上t2后的时间
t1.ShowTime(); // 输出计算后的t1时间
CTime t3 = t1 - t2; // 计算t1减去t2后的时间,并将结果赋值给t3
t3.ShowTime(); // 输出计算后的t3时间
if (t1 == t2) {
cout << "t1等于t2" << endl;
} else {
cout << "t1不等于t2" << endl;
}
if (t1 > t2) {
cout << "t1大于t2" << endl;
} else {
cout << "t1不大于t2" << endl;
}
return 0;
}
```
输出结果如下:
```
10:20:30
1:2:3
11:22:33
10:18:27
t1不等于t2
t1大于t2
```
阅读全文