//Metodi virtuali in una classe #include using namespace std; class FiguraGeometrica { //classe base public: virtual void IoSono () ; // funzione membro virtuale; solo lettura!! }; void FiguraGeometrica::IoSono () { cout << "non so che figura sono ! " << endl; } class Rettangolo: public FiguraGeometrica { //classe derivata polimorfica: eredita e dichiara una funzione membro public: void IoSono () { cout << " Io sono un rettangolo! " << endl; }; }; //void Rettangolo:: IoSono() // { // cout << " Io sono un rettangolo! " << endl; // }; class Triangolo: public FiguraGeometrica { public: void IoSono () ; }; void Triangolo:: IoSono() { cout << " Io sono un triangolo! " << endl; }; int main () { FiguraGeometrica * Fig1, * Fig2, * Fig3;// tutti puntatori a oggetti tipo FiguraGeometrica Fig1 = new Rettangolo; //oggetti assegnati sono di tipo diverso !! Fig2 = new Triangolo; Fig3 = new FiguraGeometrica; Fig1->IoSono (); // Qui il compilatore chiama la funzione IoSono() appropriata !! Fig2->IoSono (); Fig3->IoSono (); delete Fig1; delete Fig2; delete Fig3; return (0); }