📜  通过在 C++ 时间类中重载 +运算符来添加给定的时间戳(1)

📅  最后修改于: 2023-12-03 15:28:25.182000             🧑  作者: Mango

在 C++ 时间类中重载 + 运算符来添加给定的时间戳

在 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
总结

通过在时间类中重载 + 运算符,我们可以实现方便的时间相加操作。在实际使用中,可以根据需要来自定义时间的格式和精度,以及时间运算的规则。