设计一个时间类,有3个私有成员变量Hour、Minute、Second,公有成员set()、update()、show()对应设定、改变和输出时间等功能。主函数中定义对象,完成对类中成员的访问。尝试修改数据成员的访问方式,观察编译结果。
时间: 2024-10-23 18:04:11 浏览: 48
设计一个名为`Time`的时间类,可以按照以下步骤进行:
```cpp
#include <iostream>
class Time {
private:
int hour; // 小时
int minute; // 分钟
int second; // 秒钟
public:
// 公共构造函数
Time(int h = 0, int m = 0, int s = 0) : hour(h), minute(m), second(s) {}
// 公共方法设置时间
void setTime(int h, int m, int s) {
if (h >= 0 && h <= 23 && m >= 0 && m <= 59 && s >= 0 && s <= 59) {
hour = h;
minute = m;
second = s;
} else {
std::cout << "Invalid time input." << std::endl;
}
}
// 更新时间
void update(const int& deltaH, const int& deltaM, const int& deltaS) {
hour += deltaH;
minute += deltaM;
second += deltaS;
// 如果超过限制,回滚到一天的开始或结束
if (hour > 23)
hour -= 24;
else if (hour < 0)
hour += 24;
if (minute > 59)
minute -= 60;
else if (minute < 0)
minute += 60;
if (second > 59)
second -= 60;
else if (second < 0)
second += 60;
}
// 输出当前时间
void show() const {
std::cout << "Current time: " << hour << ":" << minute << ":" << second << std::endl;
}
};
int main() {
Time currentTime;
// 设置时间
currentTime.setTime(12, 30, 0);
currentTime.show();
// 更新时间
currentTime.update(2, 0, 0); // +2小时
currentTime.update(0, 30, 0); // +30分钟
currentTime.show();
return 0;
}
```
在这个例子中,我们定义了一个`Time`类,包含了私有的`hour`、`minute`和`second`变量,并提供公有的`setTime`、`update`和`show`方法用于操作时间。在`main`函数中,创建了一个`Time`对象并进行了时间的设定、更新和显示。
关于数据成员的访问方式,原本这里是公开的,可以直接通过对象名`.`来访问和修改。如果尝试将它们设为私有(如将`private`改为`protected`或`private`),则外部无法直接访问和修改这些成员,只能通过公共方法间接地操作。这将会导致在尝试修改私有成员时编译错误,因为没有对应的公共接口。这就是封装的概念,它提高了代码的安全性和维护性。
阅读全文