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

// 1.2: Puntatori a oggetti
#include <iostream>

using namespace std;

// Superclasse
class Superclass {
	private:
		int dato;
};

class Figlio : public Superclass {
	private:
		int datofiglio;
};

class Nipote : public Figlio {
	private:
		int datonipote;
};

class FiglioPRIV : private Superclass {
	private:
		int datofiglio;
};

int main() {
	Superclass s;
	Figlio f;
	Nipote n;

	FiglioPRIV fp;

	Superclass *ps;
	Figlio *pf;
	Nipote *pn;

	ps = &s;
	ps = &f;
	ps = &n;
	//ps = &fp; // ERRORE: FiglioPRIV e' una derivata private di Superclass
	Superclass &rs1 = s;
	Superclass &rs2 = f;
	Superclass &rs3 = n;
	//Superclass &rs4 = fp; // ERRORE
	
	//pf = &s; // ERRORE: Figlio non e' una superclasse di Superclass
	pf = &f;
	pf = &n;
	//pf = &fp; // ERRORE: Figlio non e' una superclasse di FiglioPRIV
	Figlio &rf1 = f;
	Figlio &rf2 = n;
	//Figlio &rf3 = s; // ERRORE
	//Figlio &rf4 = fp; // ERRORE

	pn = &n;
	//pn = &s; // ERRORE: Nipote non e' una superclasse di Superclass
	//pn = &f; // ERRORE: Nipote non e' una superclasse di Figlio
	Nipote &rn1 = n;
	//Nipote &rn2 = s; // ERRORE
	//Nipote &rn3 = f; // ERRORE
}