具有成员alarmHours和 alarmMinutes

继承时钟类Clock创建闹钟类,,具有成员alarmHours和 alarmMinutes,并实现构造函数,并且在alarmHours 小时和 alarmMinutes分钟,闹铃响并显示默认声音。同时实现插入运算符重载输出闹铃时间。



```c++
#include<iostream>
#include<thread>
#include<chrono>

class Clock {
protected:
    int hours = 0;
    int minutes = 0;
    int seconds = 0;
public:
    Clock() = default;
    Clock(int h, int m, int s) : hours(h), minutes(m), seconds(s){}
    virtual void tick() {
        seconds++;
        if (seconds == 60) {
            seconds = 0;
            minutes++;
        }
        if (minutes == 60) {
            minutes = 0;
            hours++;
        }
        if (hours == 24) {
            hours = 0;
        }
    }

    friend std::ostream& operator<<(std::ostream& os, const Clock& c) {
        os << c.hours << ":" << c.minutes << ":" << c.seconds;
        return os;
    }
};

class AlarmClock : public Clock {
private:
    int alarmHours = 0;
    int alarmMinutes = 0;
    std::string defaultSound = "Beep Beep Beep";
public:
    AlarmClock() = default;
    AlarmClock(int h, int m, int s, int ah, int am) : Clock(h,m,s), alarmHours(ah), alarmMinutes(am) {}
    bool checkAlarm() {
        if (hours == alarmHours && minutes == alarmMinutes && seconds == 0) {
            return true;
        }
        return false;
    }
    void ring() {
        std::cout << "Alarm Ringing with " << defaultSound << std::endl;
    }

    void tick() override {
        bool alarm = checkAlarm();
        Clock::tick();
        if (alarm) {
            ring();
        }
    }

    friend std::ostream& operator<<(std::ostream& os, const AlarmClock& ac) {
        os << ac.alarmHours << ":" << ac.alarmMinutes;
        return os;
    }
};

int main() {
    AlarmClock alarm(7, 30, 0, 7, 31);
    std::cout << "Alarm Set for " << alarm << std::endl;

    while (true) {
        std::cout << alarm << std::endl;
        std::this_thread::sleep_for(std::chrono::seconds(1));
        alarm.tick();
    }

    return 0;
}

```