#include <iostream>
using std::cout;
using std::endl;
class Base {
protected:
int i, j;
public:
void set(int _i, int _j) {
i = _i;
j = _j;
}
void print() {
cout << i << " " << j << endl;
}
};
class Derived1 : public Base {
int k;
public:
void set_k() {
k = i + j;
}
void show_k() {
cout << k << endl;
}
};
class Derived2 : public Derived1 {
int l;
public:
void set_l() {
l = i - j;
}
void show_l() {
cout << l << endl;
}
};
int main()
{
Derived1 o1;
Derived2 o2;
/*
o1.print();
o1.set(4, 6);
o1.set_k();
o1.show_k();
*/
/*
o2.print();
o2.set(5, 2);
o2.set_k();
o2.set_l();
o2.show_k();
o2.show_l();
*/
o1.set(4, 6);
o1.print(); // 4 6
o1.set_k();
o1.show_k(); // 10 // 4 + 6
o2.set(5, 2);
o2.print(); // 5 2
o2.set_k();
o2.show_k(); // 7 // 5 + 2
o2.set_l();
o2.show_l(); // 3 // 5 - 2
return 0;
}
/*
run:
4 6
10
5 2
7
3
*/