Ho fatto un piccolo esercizi sul polifomismo per vedere se ho capito il concetto.
Potete guardarlo e dirmi se va bene? Consigli?
Esistono modi per inserire nel forum piccoli file .zip
Grazie
Lele

// main

#include "valoribasi.h"
#include "valorimoltiplicazione.h"
#include "valorisomma.h"

#include <iostream>
using std::cout;
using std::endl;

int main(int argc, char *argv[])
{
valoriBasi *nXPtr;

int val01 = 2;
int val02 = 3;
valoriBasi nValoriBasi(val01, val02);
nXPtr = &nValoriBasi;
cout << "nXPtr->visualizza (); ";
nXPtr->visualizza ();
cout << endl;

valoriSomma nSomma (val01, val02);
valoriMoltiplicazione nMolticazione (val01, val02);

nXPtr = &nMolticazione;
nXPtr->visualizza ();
cout << endl;

nXPtr = &nSomma;
nXPtr->visualizza ();
cout << endl;
}


// valori basi

#ifndef VALORIBASI_H
#define VALORIBASI_H
#include <iostream>
using std::cout;
using std::endl;

class valoriBasi
{
public:
valoriBasi(int val01, int val02 );
void setPrimo ( int val01 );
void setSecondo ( int val02 );

int getPrimo() const;
int getSecondo() const;

virtual void visualizza() const;
private:
int primo;
int secondo;
};

#endif // VALORIBASI_H

valoribase.cpp

#include "valoribasi.h"

valoriBasi::valoriBasi(int val01, int val02)
{
setPrimo(val01);
setSecondo(val02);
}

void valoriBasi::setPrimo(int val01){
primo = val01;
}

void valoriBasi::setSecondo(int val02){
secondo = val02;
}

void valoriBasi::visualizza() const {
cout << "Valori basi\n";

cout << "Primo valore = " << getPrimo () << endl;
cout << "secondo valore = " << getSecondo () << endl;
}

int valoriBasi::getPrimo() const{
return primo;
}

int valoriBasi::getSecondo() const{
return secondo;
}

// valoriMoltiplicazione.h

#ifndef VALORIMOLTIPLICAZIONE_H
#define VALORIMOLTIPLICAZIONE_H
#include "valoribasi.h"
#include <iostream>
using std::cout;
using std::endl;

class valoriMoltiplicazione : public valoriBasi
{
public:
valoriMoltiplicazione(int &val01, int &val02);
int getMoltiplicazione() const;
virtual void visualizza() const;
};

#endif // VALORIMOLTIPLICAZIONE_H


// valoriMoltiplicazione.cpp

#include "valorimoltiplicazione.h"

valoriMoltiplicazione::valoriMoltiplicazione(int &val01, int &val02)
:valoriBasi(val01, val02)
{
}

int valoriMoltiplicazione::getMoltiplicazione () const{
return valoriBasi::getPrimo () * valoriBasi::getSecondo ();
}

void valoriMoltiplicazione::visualizza () const{
valoriBasi::visualizza ();
cout << "Valore moltiplicato = " << getMoltiplicazione () << endl;
}


// valoriSomma.h

#ifndef VALORISOMMA_H
#define VALORISOMMA_H
#include "valoribasi.h"

class valoriSomma : public valoriBasi
{
public:
valoriSomma (int &val01, int &val02);
int getSomma() const;
virtual void visualizza() const;
};

#endif // VALORISOMMA_H


// valoriSomma.cpp

#include "valorisomma.h"

valoriSomma::valoriSomma(int &val01, int &val02)
: valoriBasi(val01, val02)
{
}

int valoriSomma::getSomma () const {
return valoriBasi::getPrimo () + valoriBasi::getSecondo ();
}

void valoriSomma::visualizza () const{
valoriBasi::visualizza ();
cout << "Valori sommati " << getSomma () << endl;
}