📅  最后修改于: 2023-12-03 15:28:25.182000             🧑  作者: Mango
在 C++ 中,可以通过重载运算符来实现一些自定义的操作。其中,重载 + 运算符可以用来实现两个对象的相加操作。在时间类中,我们可以通过重载 + 运算符来实现给定的时间戳加上一个时间的操作。
在定义时间类之前,我们需要先确定一下时间的格式。这里我们使用时分秒的形式,使用 24 小时制。
class Time {
public:
Time(int hours = 0, int minutes = 0, int seconds = 0);
// 构造函数,用于初始化时间
void set(int hours, int minutes, int seconds);
// 设置时间
int get_hours() const;
int get_minutes() const;
int get_seconds() const;
// 获取时间的小时数、分钟数和秒数
Time operator+(const Time& other) const;
// 重载 + 运算符,用于实现两个时间相加
private:
int m_hours;
int m_minutes;
int m_seconds;
};
Time::Time(int hours, int minutes, int seconds)
: m_hours(hours), m_minutes(minutes), m_seconds(seconds) {}
void Time::set(int hours, int minutes, int seconds) {
m_hours = hours;
m_minutes = minutes;
m_seconds = seconds;
}
int Time::get_hours() const {
return m_hours;
}
int Time::get_minutes() const {
return m_minutes;
}
int Time::get_seconds() const {
return m_seconds;
}
Time Time::operator+(const Time& other) const {
int hours = m_hours + other.m_hours;
int minutes = m_minutes + other.m_minutes;
int seconds = m_seconds + other.m_seconds;
if (seconds >= 60) {
minutes += seconds / 60;
seconds %= 60;
}
if (minutes >= 60) {
hours += minutes / 60;
minutes %= 60;
}
if (hours >= 24) {
hours %= 24;
}
return Time(hours, minutes, seconds);
}
使用时,可以先创建一个时间对象,然后调用 set 函数来设置时间,也可以在创建时间对象的同时初始化时间。例如:
Time t1; // t1 的时间为 00:00:00
t1.set(12, 30, 45); // t1 的时间为 12:30:45
Time t2(10, 20); // t2 的时间为 10:20:00
t2 = t2 + t1; // t2 的时间为 22:50:45
通过在时间类中重载 + 运算符,我们可以实现方便的时间相加操作。在实际使用中,可以根据需要来自定义时间的格式和精度,以及时间运算的规则。