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

// 7.2: protected
#include <iostream>

using namespace std;

class A {
	private:
		int varprivate;
	protected:
		int varprotected;
	public:
		int varpublic;

		// metodo A_method
		void A_method();
	
		// costruttore
		A()
		: varprivate(0), varprotected(0), varpublic(0) { };
};

// classe B, derivata protected di A
class B : public A {
	public:
		// metodo incrementale B_method
		void B_method();
};

// Implementazione dei metodi
void A::A_method() {
	cout << "A_method" << endl;
	cout << "\tvarprivate: " << varprivate << endl;
	cout << "\tvarprotected: " << varprotected << endl;
	cout << "\tvarpublic: " << varpublic << endl;
	cout << "End of A_method" << endl;
};

void B::B_method() {
	cout << "B_method" << endl;
	//cout << "\tvarprivate: " << varprivate << endl; // non e' lecito!!
	cout << "\tvarprotected: " << varprotected << endl; // e' lecito qui ma non in function
	cout << "\tvarpublic: " << varpublic << endl;
	cout << "End of B_method" << endl;
};

void function(class B b) {
	cout << "function" << endl;
	//cout << "\tvarprivate: " << b.varprivate << endl; // non e' lecito!!
	//cout << "\tvarprotected: " << b.varprotected << endl; // non e' lecito!!
	cout << "\tvarpublic: " << b.varpublic << endl;
	cout << "End of function" << endl;
};

void main() {
	B b;

	b.A_method();
	b.B_method();
	function(b);
};