//********************************* // file contatore.h //********************************* class Contatore { public: Contatore(); Contatore(int valoreIniziale); int getValoreContatore(); void incrementaContatore(); private: int valoreContatore; }; //********************************* // file contatore.cpp //********************************* #include "contatore.h" Contatore::Contatore() { valoreContatore = 0; } Contatore::Contatore(int valoreIniziale) { valoreContatore = valoreIniziale; } int Contatore::getValoreContatore() { return valoreContatore; } void Contatore::incrementaContatore() { valoreContatore++; } //********************************* // file contatoredoppio.h //********************************* #include "contatore.h" class ContatoreDoppio : public Contatore { public: ContatoreDoppio(int valoreIniziale); void incrementaContatore(); }; //********************************* // file contatoredoppio.cpp //********************************* #include "contatoredoppio.h" // Si noti la chiamata al costruttore della classe padre, dopo i due punti ContatoreDoppio::ContatoreDoppio(int valoreIniziale) : Contatore(valoreIniziale) { } void ContatoreDoppio::incrementaContatore () { // Viene chiamato il metodo incrementaContatore della classe padre // utilizzando lo scope operator :: for (int i =0; i < 2; i++) { Contatore::incrementaContatore(); } } //********************************* // file main.cpp //********************************* #include "contatoredoppio.h" #include < iostream> main() { Contatore cont1(3); ContatoreDoppio cont2(3); cout << cont1.getValue() << endl; cout << cont2.getValue() << endl; cont1.incrementaContatore(); cont2.incrementaContatore(); cout << cont1.getValue() << endl; cout << cont2.getValue() << endl; }