// aikacla9.cpp - myöhäinen sidonta #include #include class cAika { int h,m; public: virtual void aseta(int ih,int im=0) { // lisätty virtual h = ih; m = im; lisaa(0); } cAika(int ih=0, int im=0) { aseta(ih,im); } virtual void lisaa(int lisa_min) { // lisätty virtual int yht_min = h * 60 + m + lisa_min; h = yht_min / 60; m = yht_min % 60; } virtual void tulosta(int lf=1) const { // lisätty virtual cout << setfill('0') << setw(2) << h << ":" << setw(2) << m; if ( lf ) cout << endl; } }; class cAikaSek : public cAika { int s; public: virtual void aseta(int ih=0, int im=0) { cAika::aseta(ih,im); } // lisätty virtual void aseta(int ih, int im, int is) { // lisätty virtual s = is; aseta(ih,im); lisaa(0,0); // pois cAika:: } cAikaSek(int ih=0, int im=0, int is=0) { aseta(ih,im,is); } virtual void lisaa(int lisa_min) { cAika::lisaa(lisa_min); } // lisätty virtual void lisaa(int lisa_min, int lisa_sek) { // lisätty virtual s += lisa_sek; lisaa(lisa_min+s/60); s %= 60; // pois cAika:: } virtual void tulosta(int lf=1) const { // lisätty virtual cAika::tulosta(0); cout << ":" << setw(2) << s; if ( lf ) cout << endl; } }; int main(void) { cAika a1, a2(13), a3(14,175); a1.tulosta(); a2.tulosta(); a3.tulosta(); a1.aseta(12,15); a2.aseta(16,-15); a1.tulosta(); a2.tulosta(); cAikaSek a4(12,55,45); a4.tulosta(1); // lisätty uusi a4.lisaa(3,30); a4.tulosta(1); cAika *pAika; pAika = &a1; pAika->tulosta(); pAika = &a4; pAika->tulosta(); return 0; }