//: C14:Protected.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// The protected keyword

#include <fstream>
using namespace std;

/* Questo programma è un esempio di utilizzo delle classi "derivate", ovvero classi che sfruttano l'ereditarietà tra classi.*/

class Base
{

int i;


protected:

/* Tutto ciò che viene definito sotto la keyword "protected" è visibile anche dalla classe derivata o figlia e diviene come un suo attributo privato (quindi accessibile solo attraverso metodi della classe figlia).*/


int read() const { return i; }
void set(int ii) { i = ii; }

public:

Base(int ii = 0) : i(ii) {}
int value(int m) const { return m*i; }

};

class Derived : public Base
{

int j;

public:

Derived(int jj = 0) : j(jj) {}
void change(int x) { set(x); }

};

int main()
{

Derived d;
d.change(10);

} ///:~