// 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);
};