cpp2html 0.1-alpha © 2002 Andrea Leofreddi. To get the source click here

// 2.4: Funzioni virtuali
#include <iostream>

using namespace std;

// Superclasse
class Superclass {
	private:
		char nome[64];
	public:
		// metodi
		virtual void method() {
			cout << "method: Superclass: il mio nome e' " << nome << endl;
		};

		// costruttore
		Superclass(const char *s) {
			strcpy(nome, s);
		};
};

class A : public Superclass {
	private:
		char nuovo[64];
	public:
		// metodi
		void method() {
			cout << "method: A: il mio nome e' " << nuovo << endl;
		};

		A(const char *s) 
		: Superclass("[costruito da A]") {
			strcpy(nuovo, s);
		}
};

class B : public Superclass {
	private:
		char nuovo[64];
	public:
		// metodi
		void method() {
			cout << "method: B: il mio nome e' " << nuovo << endl;
		};

		B(const char *s) 
		: Superclass("[costruito da B]") {
			strcpy(nuovo, s);
		}
};

class C : public Superclass {
	private:
		char nuovo[64];
	public:
		// metodi
		void method() {
			cout << "method: C: il mio nome e' " << nuovo << endl;
		};

		C(const char *s) 
		: Superclass("[costruito da C]") {
			strcpy(nuovo, s);
		}
};

class D : public C {
	public:
		D(const char *s)
		: C(s) { };
};

class E : public Superclass {
	public:
		E(const char *s)
		: Superclass(s) { };
};


int main() {
	Superclass s("istanza S");
	A a("istanza A");
	B b("istanza B");
	C c("istanza C");
	D d("istanza D");
	E e("istanza E");

	Superclass *p; // Puntatore a Superclass

	p = &s;
	p->method();

	p = &a;
	p->method();

	p = &b;
	p->method();

	p = &c;
	p->method();
	
	p = &d;
	p->method();
	
	p = &e;
	p->method();
}