Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- // Базовий клас A1
- class A1 {
- protected:
- int dataA1;
- public:
- A1(int value = 0) : dataA1(value) {}
- A1(const A1& other) : dataA1(other.dataA1) {}
- virtual ~A1() {}
- void setDataA1(int value) { dataA1 = value; }
- int getDataA1() const { return dataA1; }
- friend ostream& operator<<(ostream& os, const A1& obj) { os << obj.dataA1; return os; }
- friend istream& operator>>(istream& is, A1& obj) { is >> obj.dataA1; return is; }
- };
- // Клас B1 успадковує A1
- class B1 : private A1 {
- protected:
- int dataB1;
- public:
- B1(int value = 0) : A1(value), dataB1(value) {}
- B1(const B1& other) : A1(other), dataB1(other.dataB1) {}
- ~B1() {}
- void setDataB1(int value) { dataB1 = value; }
- int getDataB1() const { return dataB1; }
- friend ostream& operator<<(ostream& os, const B1& obj) { os << obj.dataB1; return os; }
- friend istream& operator>>(istream& is, B1& obj) { is >> obj.dataB1; return is; }
- };
- // Клас C1 успадковує B1
- class C1 : protected B1 {
- protected:
- int dataC1;
- public:
- C1(int value = 0) : B1(value), dataC1(value) {}
- C1(const C1& other) : B1(other), dataC1(other.dataC1) {}
- ~C1() {}
- void setDataC1(int value) { dataC1 = value; }
- int getDataC1() const { return dataC1; }
- friend ostream& operator<<(ostream& os, const C1& obj) { os << obj.dataC1; return os; }
- friend istream& operator>>(istream& is, C1& obj) { is >> obj.dataC1; return is; }
- };
- // Клас D1 успадковує C1
- class D1 : private C1 {
- protected:
- int dataD1;
- public:
- D1(int value = 0) : C1(value), dataD1(value) {}
- D1(const D1& other) : C1(other), dataD1(other.dataD1) {}
- ~D1() {}
- void setDataD1(int value) { dataD1 = value; }
- int getDataD1() const { return dataD1; }
- friend ostream& operator<<(ostream& os, const D1& obj) { os << obj.dataD1; return os; }
- friend istream& operator>>(istream& is, D1& obj) { is >> obj.dataD1; return is; }
- };
- // Клас E1 успадковує D1
- class E1 : public D1 {
- protected:
- int dataE1;
- public:
- E1(int value = 0) : D1(value), dataE1(value) {}
- E1(const E1& other) : D1(other), dataE1(other.dataE1) {}
- ~E1() {}
- void setDataE1(int value) { dataE1 = value; }
- int getDataE1() const { return dataE1; }
- friend ostream& operator<<(ostream& os, const E1& obj) { os << obj.dataE1; return os; }
- friend istream& operator>>(istream& is, E1& obj) { is >> obj.dataE1; return is; }
- };
- // Аналогічно побудуємо інші класи для A3, B3, C3, D2
- int main() {
- E1 e1(10);
- cout << "Value in E1: " << e1.getDataE1() << endl;
- D1 d1(5);
- cout << "Value in D1: " << d1.getDataD1() << endl;
- // Інші приклади для A3, B3, C3, D2 можуть бути додані аналогічно
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement