Определим все классы на C++, начиная от самых базовых и заканчивая самыми производными. Верхние два класса (ни от кого не наследуют):
class A { protected:
int a; // защищѐнное свойство public:
A(int a0) { a = a0; } // конструктор, который задаѐт a void operator++() { cout << a; } // вывод свойства на экран
}; class B { protected:
int b; // защищѐнное свойство public:
B(int b0) { b = b0; } // конструктор, который задаѐт b void operator++() { cout << b; } // вывод свойства на экран
};
Наследник C:
class C : public A, private B // указали родителей с типом наследования
{ protected:
int c; public:
C(int a0, int b0, int c0) : A(a0), B(b0) { c = c0; } ^ конструктор с тремя параметрами, первые два для родителей, третий для себя
^ вызвали конструкторы родителей, чтобы сообщить им их свойства
^ присвоили себе своѐ свойство virtual void operator++() {
// здесь слово virtual, чтобы показать, что метод может быть переопределѐн в классах-наследниках. Кстати, оно должно здесь стоять и в классах А и В.
A::operator++(); // вывели свойство A, вызвав метод объекта A
B::operator++(); // вывели свойство B так же cout << c; // вывели своѐ свойство
} }; class F : public D, private E { protected:
int f; public:
F(int a0, int b0, int c0, int d0, int e0, int f0) : D(a0, b0, c0, d0), E(e0) { f = f0; } virtual void operator++() {
D::operator++(); E::operator++(); cout << f;
} };
Как сделать main:
void main() {
F obj(1, 2, 3, 4, 5, 6); // создали объект obj класса F со всеми свойствами
++f; // вывели все свойства
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.