编写日期时间类,年、月、日、时、分、秒都是数据成员,编写运算符“++”、“- -”、“+”、 “-”、 “>>” 、“<<”的重载函数,在主函数的函数体内中实现使用运算符直接进行日期时间对象的加、减运算。
时间: 2023-11-05 13:09:48 浏览: 37
以下是一个简单的日期时间类的实现,包括所有要求的运算符重载:
```cpp
#include <iostream>
using namespace std;
class DateTime {
private:
int year, month, day, hour, minute, second;
public:
DateTime(int y=0, int m=1, int d=1, int h=0, int mi=0, int s=0)
: year(y), month(m), day(d), hour(h), minute(mi), second(s) {}
DateTime operator++() { // 前缀++
++second;
if (second >= 60) { second -= 60; ++minute; }
if (minute >= 60) { minute -= 60; ++hour; }
if (hour >= 24) { hour -= 24; ++day; }
return *this;
}
DateTime operator--() { // 前缀--
--second;
if (second < 0) { second += 60; --minute; }
if (minute < 0) { minute += 60; --hour; }
if (hour < 0) { hour += 24; --day; }
return *this;
}
DateTime operator+(int sec) { // 加上秒数
DateTime result = *this;
result.second += sec;
if (result.second >= 60) { result.second -= 60; ++result.minute; }
if (result.minute >= 60) { result.minute -= 60; ++result.hour; }
if (result.hour >= 24) { result.hour -= 24; ++result.day; }
return result;
}
DateTime operator-(int sec) { // 减去秒数
DateTime result = *this;
result.second -= sec;
if (result.second < 0) { result.second += 60; --result.minute; }
if (result.minute < 0) { result.minute += 60; --result.hour; }
if (result.hour < 0) { result.hour += 24; --result.day; }
return result;
}
friend istream& operator>>(istream& is, DateTime& dt) { // 输入
char c;
is >> dt.year >> c >> dt.month >> c >> dt.day >> dt.hour >> c >> dt.minute >> c >> dt.second;
return is;
}
friend ostream& operator<<(ostream& os, const DateTime& dt) { // 输出
os << dt.year << '/' << dt.month << '/' << dt.day << ' ' << dt.hour << ':' << dt.minute << ':' << dt.second;
return os;
}
};
int main() {
DateTime dt1(2022, 5, 1, 12, 0, 0), dt2;
cout << "Input a date and time (yyyy/mm/dd hh:mm:ss): ";
cin >> dt2;
cout << "dt1 = " << dt1 << endl;
cout << "dt2 = " << dt2 << endl;
cout << "dt1 + 3600 = " << dt1 + 3600 << endl;
cout << "dt2 - 7200 = " << dt2 - 7200 << endl;
cout << "++dt1 = " << ++dt1 << endl;
cout << "--dt2 = " << --dt2 << endl;
return 0;
}
```
这个程序定义了一个 `DateTime` 类,包括了年、月、日、时、分、秒六个数据成员,在类中重载了前缀++、前缀--、加法、减法、输入和输出运算符。在主函数中创建了两个日期时间对象 `dt1` 和 `dt2`,并演示了运算符的使用。