= Contents = - [[#C++ Examples|C++ Examples]] - [[#C++ Examples#Friend operator|Friend operator]] - [[#C++ Examples#Time Header|Time Header]] = C++ Examples = == Friend operator == {{{c++ #include class T { int x; public: T (int x); friend std::ostream& operator<<(std::ostream&, const T&); }; T::T (int x) { this->x = x; } std::ostream& operator<<(std::ostream& out, const T& t) { out << "T {" << t.x << "}"; return out; } int main () { T t(10); std::cout << t << std::endl; } }}} == Time Header == {{{c++ #pragma once #include enum timetype { _day, _hour, _minute, _second }; class Time { private: int _days = 0; int _hours = 0; int _minutes = 0; int _seconds = 0; public: Time() { }; Time(int n, timetype type); int to_seconds() const; friend std::ostream& operator<<(std::ostream&, const Time&); friend Time operator * (int, Time); Time operator + (const Time&); Time operator , (const Time& t) { return *this + t; } Time operator && (const Time& t) { return *this + t; } }; #define days * Time(1, _day) #define day days #define hours * Time(1, _hour) #define hour hours #define minutes * Time(1, _minute) #define minute minutes #define seconds * Time(1, _second) #define second seconds int main() { std::cout << 5 days << std::endl << 7 minutes << std::endl << (5 days and 3 seconds) << std::endl << (7 days, 7 minutes and 3 seconds) << std::endl << (9 hours and 1 second) << std::endl ; } }}}