Джесс Либерти - Освой самостоятельно С++ за 21 день.

Здесь есть возможность читать онлайн «Джесс Либерти - Освой самостоятельно С++ за 21 день.» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Освой самостоятельно С++ за 21 день.: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Освой самостоятельно С++ за 21 день.»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В книге широко представлены возможности новейшей версии программного продукта Microsoft Visual C++. Подробно описаны средства и подходы программирования современных профессиональных приложений. Материалы книги дополнены многочисленными демонстрационными программами, в процессе разработки которых максимально используются возможности программных инструментов Microsoft Visual Studio. Особое внимание уделено новинкам версии 6.0 и новейшим технологиям объектно-ориентированного программирования, включая использование библиотеки MFC и шаблонов классов, а также создание связанных списков. Отдельное занятие посвящено вопросам объектно-ориентированного анализа и проектирования приложений. Подробно рассмотрены все средства и подходы конструирования собственных пользовательских классов.
Книга рассчитана на широкий круг читателей, интересующихся современными проблемами программирования.

Освой самостоятельно С++ за 21 день. — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Освой самостоятельно С++ за 21 день.», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Листинг 13.3. Множественное наследование

1: // Листинг 13.3. Множественное наследование.

2: // Множественное наследование

3:

4: #include

5:

6: class Horse

7: {

8: public:

9: Horse() { cout << "Horse constructor... "; }

10: virtual ~Horse() { cout << "Horse destructor... "; }

11: virtual void Whinny() const { cout << "Whinny!... "; }

12: private:

13: int itsAge;

14: };

15:

16: class Bird

17: {

18: public:

19: Bird() { cout << "Bird constructor... "; }

20: virtual ~Bird() { cout << "Bird destructor... "; }

21: virtual void Chirp() const { cout << "Chirp... "; }

22: virtual void Fly() const

23: {

24: cout << "I can fly! I can fly! I can fly! ";

25: }

26: private:

27: int itsWeight;

28: };

29:

30: class Pegasus : public Horse, public Bird

31: {

32: public:

33: void Chirp() const { Whinny(); }

34: Pegasus() { cout << "Pegasus constructor... "; }

35: ~Pegasus() { cout << "Pegasus destructor... "; }

36: };

37:

38: const int MagicNumber = 2;

39: int main()

40: {

41: Horse* Ranch[MagicNumber];

42: Bird* Aviary[MagicNumber];

43: Horse * pHorse;

44: Bird * pBird;

45: int choice,i;

46: for (i=0; i

47: {

48: cout << "\n(1)Horse (2)Pegasus: ";

49: cin >> choice;

50: if (choice == 2)

51: pHorse = new Pegasus;

52: else

53: pHorse = new Horse;

54: Ranch[i] = pHorse;

55: }

56: for (i=0; i

57: {

58: cout << "\n(1)Bird (2)Pegasus: ";

59: cin >> choice;

60: if (choice == 2)

61: pBird = new Pegasus;

62: else

63: pBird = new Bird;

64: Aviary[i] = pBird;

65: }

66:

67: cout << "\n";

68: for (i=0; i

69: {

70: cout << "\nRanch[" << i << "]:

71: Ranch[i]->Whinny();

72: delete Ranch[i];

73: }

74:

75: for (i=0; i

76: {

77: cout << "\nAviary[" << i << "]

78: Aviary[i]->Chirp();

79: Aviary[i]->Fly();

80: delete Aviary[i];

81: }

82: return 0;

83: }

Результат:

(1)Horse (2)Pegasus: 1

Horse constructor...

(1)Horse (2)Pegasus: 2

Horse constructor... Bird constructor... Pegasus constructor...

(1)Bird (2)Pegasus: 1

Bird constructor...

(1)6ird (2)Pegasus: 2

Horse constructor... Bird constructor... Pegasus constructor...

Ranch[0]: Whinny!... Horse destructor...

Ranch[1]: Whinny!... Pegasus destructor... Bird destructor...

Horse destructor...

Aviary[0]: Chirp... I can fly! I can fly! I can fly! Bird destructor...

Aviary[1]: Whinny!... I can fly! I can fly! I can fly!

Pegasus destructor... Bird destructor... Horse destructor...

Анализ:В строках 6—14 объявляется класс Horse. Конструктор и деструктор выводят на экран сообщения о своей работе, а метод Whinny() печатает Whinny! (И-го-го).

Класс Bird объявляется в строках 16—28. В дополнение к своим конструктору и деструктору этот класс содержит два метода: Chirp() и Fly(), каждый из которых выводит на экран соответствующие сообщения. В реальных программах эти методы могут воспроизводить определенный звуковой файл или управлять анимационными эффектами на экране.

Наконец, в строках 30-36 объявляется класс Pegasus. Он производится сразу от двух базовых классов — Bird и Horse. В классе замешается метод Chirp() таким образом, что вызывается метод Whinny(), который унаследован этим классом от класса Horse.

Создается два списка: Ranch (конюшня), который в строке 41 связывается с классом Horse, и Aviary (птичник), который в строке 42 связывается с классом Bird. В строках 46—55 в список Ranch добавляются два объекта — Horse и Pegasus. В строках 56—65 в список Aviary добавляются объекты Bird и Pegasus.

Вызовы виртуальных методов с помощью указателей классов Bird и Horse одинаково выполняются для объекта Pegasus. Например, в строке 78 метод Chirp() вызывается последовательно для всех объектов, указатели на которые представлены в массиве Aviary. Поскольку этот метод объявлен в классе Bird как виртуальный, он правильно Выполняется для всех объектов списка.

По выводимым на экран строкам можно заключить, что при создании объекта Pegasus вызываются конструкторы всех трех классов — Bird, Horse и Pegasus, каждый из которых создает свою часть объекта. При удалении объекта также удаляются его части, относящиеся к классам Bird и Horse, для чего деструкторы в этих классах объявлены как виртуальные.

Объявление множественного наследования

Чтобы указать, что создаваемый объект наследует свойства более чем одного базового класса после имени создаваемого класса ставится двоеточие, вслед за которым через запятую перечислены имена всех базовых классов.

Пример 1:

class Pegasus : public Horse, public Bird

Пример 2:

class Schnoodle : public Schnauzer, public Poodle

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

Когда в памяти компьютера создается объект Pegasus, конструкторы обоих классов принимают участие в его построении, как показано на рис. 13.1.

Рис 131 Объект полученный в результате множественного наследования В - фото 34

Рис. 13.1. Объект, полученный в результате множественного наследования

В случае использования множественного наследования возникает ряд непростых и весьма интересных вопросов. Например, что произойдет, если оба базовых класса будут иметь одно и то же имя либо содержать виртуальные функции или данные с одинаковыми именами? Как инициализируются конструкторы разных базовых классов? Что произойдет, если два базовых класса будут произведены от одного и того же родительского класса? Все эти вопросы будут рассмотрены в следующем разделе, после чего можно переходить к практическому использованию множественного наследования.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Освой самостоятельно С++ за 21 день.»

Представляем Вашему вниманию похожие книги на «Освой самостоятельно С++ за 21 день.» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Освой самостоятельно С++ за 21 день.»

Обсуждение, отзывы о книге «Освой самостоятельно С++ за 21 день.» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x