//*********************************
// 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;
}