C++ Operator Overload Time class with an overloaded insertion operator.
#include <iostream> #include <iomanip> #include <iostream> class Time/* ww w.jav a 2 s . c o m*/ { private: int hours {}; int minutes {}; int seconds {}; public: Time() = default; Time(int h, int m, int s); int getHours()const { return hours; } int getMinutes()const { return minutes; } int getSeconds()const { return seconds; } }; std::ostream& operator <<(std::ostream& out, const Time& rT); // Overloaded insertion operator declaration // Constructor - implemented to allow specification of minutes and seconds more than 59 Time::Time(int h, int m, int s) { seconds = s%60; // Seconds left after removing minutes minutes = m + s/60; // Minutes plus minutes from seconds hours = h + minutes/60; // Hours plus hours from minutes minutes %= 60; // Minutes left after removing hours } // Insertion operator std::ostream& operator <<(std::ostream& out, const Time& rT) { out << ' ' << rT.getHours() << ':'; char fillCh {out.fill('0')}; // Set fill for leading zeros out << std::setw(2) << rT.getMinutes() << ':' << std::setw(2) << rT.getSeconds() << ' '; out.fill(fillCh); // Restore old fill character return out; } int main() { Time period1(10,30,25); Time period2(1, 70,90); std::cout << "\nPeriod 1 is " << period1 << "\nPeriod 2 is " << period2 << std::endl; }