13 авг. 2010 г.

Множественное наследование в языке С++

Множественное наследование в языке С++

Множественное наследование означает такую возможность некоторых объектно-ориентированных языков программирования, при которой класс может наследовать поведение и возможности от более чем одного суперкласса. Это противоположно по смыслу «простому (или одиночному) наследованию» (single inheritance), при котором класс может наследовать только от одного суперкласса.
В список языков, поддерживающих множественное наследование входят: Eiffel, C++, Dylan, Python, Perl, Curl, Common Lisp (благодаря CLOS), OCaml, Tcl (благодаря Incremental Tcl), а также Object REXX (за счет использования классов-примесей).
C++ требует, чтобы программист указал элемент какого из родительских классов должен использоваться, то есть «Worker::Person.Age». C++ не поддерживает явно повторяемое наследование, так как отсутствует способ определить какой именно суперкласс следует использовать. C++ также допускает создание единственного экземпляра множественного класса благодаря механизму виртуального наследования (например,. «Worker::Person» и «Musician::Person» будут ссылаться на один и тот же объект).

Задача программы

Написать консольное приложение, которое позволяло бы осуществить построение иерархии классов согласно схеме наследования, приведенной ниже:

Cхемa наследования

Множественное наследование в языке С++
Каждый класс должен содержать инициализирующий конструктор и функцию show для вывода значений.
Функция main должна иллюстрировать иерархию наследования.

Cкриншот работы программы

Множественное наследование в языке С++

Список поставленных задач

Программы должна реализовать следующие операции:
  • Создать необходимую иерархию классов;
  • Создать во всех классах конструкторы, которые смогли бы по цепочке наследования инициализировать свои переменные и передавать остальные значения дальше вверх вплоть до конструктора базового класса;
  • Добавить в каждый класс функцию show, которая бы выводила на экран переменную из секцииprivate класса, которому принадлежит сама и вызывала бы функции show тех классов, которые стоят выше по иерархии наследования.
Содержание архива:
  • файл проэкта и все необходимые .cpp файлы
  • .exe файл
Проэкт разработан в: visual studio 2008