用c++语言用继承机制自定义一个带有时区的时间类并对这个类加以构造开使用。要求时区用枚举类 型来实现。
时间: 2024-02-18 19:03:02 浏览: 96
C++写的自定义时间类
5星 · 资源好评率100%
好的,我可以为您解答这个问题。
首先,我们需要定义一个枚举类型来表示时区。假设我们只考虑全球主要的24个时区,我们可以定义如下的枚举类型:
```c++
enum class TimeZone {
UTC_P12, UTC_P11, UTC_P10, UTC_P9, UTC_P8, UTC_P7, UTC_P6, UTC_P5, UTC_P4, UTC_P3, UTC_P2, UTC_P1,
UTC_0,
UTC_N1, UTC_N2, UTC_N3, UTC_N4, UTC_N5, UTC_N6, UTC_N7, UTC_N8, UTC_N9, UTC_N10, UTC_N11, UTC_N12
};
```
接下来,我们可以定义一个 `Time` 类,它包含时、分、秒和时区四个数据成员,并提供一些构造函数和成员函数来对这个类进行操作。具体代码如下:
```c++
class Time {
public:
Time() : hour(0), minute(0), second(0), timeZone(TimeZone::UTC_0) {}
Time(int h, int m, int s, TimeZone tz) : hour(h), minute(m), second(s), timeZone(tz) {}
Time(const Time& t) : hour(t.hour), minute(t.minute), second(t.second), timeZone(t.timeZone) {}
// 成员函数
void setTime(int h, int m, int s);
void setTimeZone(TimeZone tz);
void printTime() const;
private:
int hour; // 时
int minute; // 分
int second; // 秒
TimeZone timeZone; // 时区
};
```
其中,`setTime` 函数用于设置时间,`setTimeZone` 函数用于设置时区,`printTime` 函数用于输出时间和时区。
接下来,我们需要实现这些函数。具体代码如下:
```c++
void Time::setTime(int h, int m, int s) {
hour = h;
minute = m;
second = s;
}
void Time::setTimeZone(TimeZone tz) {
timeZone = tz;
}
void Time::printTime() const {
std::cout << hour << ":" << minute << ":" << second << " (UTC";
switch (timeZone) {
case TimeZone::UTC_P12: std::cout << "+12"; break;
case TimeZone::UTC_P11: std::cout << "+11"; break;
case TimeZone::UTC_P10: std::cout << "+10"; break;
case TimeZone::UTC_P9: std::cout << "+9"; break;
case TimeZone::UTC_P8: std::cout << "+8"; break;
case TimeZone::UTC_P7: std::cout << "+7"; break;
case TimeZone::UTC_P6: std::cout << "+6"; break;
case TimeZone::UTC_P5: std::cout << "+5"; break;
case TimeZone::UTC_P4: std::cout << "+4"; break;
case TimeZone::UTC_P3: std::cout << "+3"; break;
case TimeZone::UTC_P2: std::cout << "+2"; break;
case TimeZone::UTC_P1: std::cout << "+1"; break;
case TimeZone::UTC_0: std::cout << "+0"; break;
case TimeZone::UTC_N1: std::cout << "-1"; break;
case TimeZone::UTC_N2: std::cout << "-2"; break;
case TimeZone::UTC_N3: std::cout << "-3"; break;
case TimeZone::UTC_N4: std::cout << "-4"; break;
case TimeZone::UTC_N5: std::cout << "-5"; break;
case TimeZone::UTC_N6: std::cout << "-6"; break;
case TimeZone::UTC_N7: std::cout << "-7"; break;
case TimeZone::UTC_N8: std::cout << "-8"; break;
case TimeZone::UTC_N9: std::cout << "-9"; break;
case TimeZone::UTC_N10: std::cout << "-10"; break;
case TimeZone::UTC_N11: std::cout << "-11"; break;
case TimeZone::UTC_N12: std::cout << "-12"; break;
}
std::cout << ")" << std::endl;
}
```
最后,我们可以在 `main` 函数中创建一个 `Time` 对象,并对它进行操作。具体代码如下:
```c++
int main() {
Time t1; // 初始化为 00:00:00 (UTC+0)
t1.setTime(8, 30, 0); // 设置为 08:30:00
t1.setTimeZone(TimeZone::UTC_P8); // 设置时区为 UTC+8
t1.printTime(); // 输出 "8:30:0 (UTC+8)"
Time t2(12, 0, 0, TimeZone::UTC_0); // 初始化为 12:00:00 (UTC+0)
t2.setTimeZone(TimeZone::UTC_P1); // 设置时区为 UTC+1
t2.printTime(); // 输出 "12:0:0 (UTC+1)"
return 0;
}
```
这样,我们就完成了一个带有时区的时间类,并对它进行了构造、设置和输出等操作。
阅读全文