![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Листинг 13.4. Создание объектов при множественном наследовании
1: // Листинг 13.4. 2: // Создание обьектов при множественном наследовании 3: #include < iostream.h> 4: typedef int HANDS; 5: enum COLOR { Red, Green, Blue, Yellow, White, Black, Brown }; 6: 7: class Horse 8: { 9: public: 10: Horse(COLOR color, HANDS height); 11: virtual ~Horse() { cout < < " Horse destructor...\n"; } 12: virtual void Whinny()const { cout < < " Whinny!... "; } 13: virtual HANDS GetHeight() const { return itsHeight; } 14: virtual COLOR GetColor() const { return itsColor; } 15: private: 16: HANDS itsHeight; 17: COLOR itsColor; 18: }; 19: 20: Horse:: Horse(COLOR color, HANDSheight): 21: itsColor(color), itsHeight(height) 22: { 23: cout < < " Horse constructor...\n"; 24: } 25: 26: class Bird 27: { 28: public: 29: Bird(COLOR color, bool migrates); 30: virtual ~Bird() { cout < < " Bird destructor...\n"; } 31: virtual void Chirp()const { cout < < " Chirp... "; } 32: virtual void Fly()const 33: { 34: cout < < " I can fly! I can fly! I can fly! "; 35: } 36: virtual COLOR GetColor()const { return itsColor; } 37: virtual bool GetMigration() const { return itsMigration; } 38: 39: private: 40: COLOR itsColor; 41: bool itsMigration; 42: }; 43: 44: Bird:: Bird(COLOR color, bool migrates): 45: itsColor(color), itsMigration(migrates) 46: { 47: cout < < " Bird constructor...\n"; 48: } 49: 50: class Pegasus: public Horse, public Bird 51: { 52: public: 53: void Chirp()const { Whinny(); } 54: Pegasus(COLOR, HANDS, bool, long); 55: ~Pegasus() { cout < < " Pegasus destructor...\n"; } 56: virtual long GetNumberBelievers() const 57: { 58: return itsNumberBelievers; 59: } 60: 61: private: 62: long itsNumberBelievers; 63: }; 64: 65: Pegasus:: Pegasus( 66: COLOR aColor, 67: HANDS height, Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение 68: bool migrates, 69: long NumBelieve): 70: Horse(aColor, height), 71: Bird(aColor, migrates), 72: itsNumberBelievers(NumBelieve) 73: { 74: cout < < " Pegasus constructor...\n"; 75: } 76: 77: int main() 78: { 79: Pegasus *pPeg = new Pegasus(Red, 5, true, 10); 80: pPeg-> Fly(); 81: pPeg-> Whinny(); 82: cout < < " \nYour Pegasus is " < < pPeg-> GetHeight(); 83: cout < < " hands tall and "; 84: if (pPeg-> GetMigration()) 85: cout < < " it does migrate."; 86: else 87: cout < < " it does not migrate."; 88: cout < < " \nA total of " < < pPeg-> GetNumberBelievers(); 89: cout < < " people believe it exists.\n"; 90: delete pPeg; 91: return 0; 92: }
Результат: Horse constructor... Bird constructor... Pegasus constructor... I can fly! I can fly! I can fly! Whinny!... Your Pegasus is 5 hands tall and it does migrate. A total of 10 people believe it exists. Pegasus destructor... Bird destructor... Horse destructor...
Анализ: Класс Horse объявляется в строках 7—18. Конструктор этого класса принимает два параметра: один из них — это перечисление, объявленное в строке 5, а второй — новый тип, объявленный с помощью typedef в строке 4. Этот конструктор выполняется в строках 20—24. При этом инициализируется одна переменная-член и на экран выводится сообщение о работе конструктора класса Horse. В строках 26—42 объявляется класс Bird, конструктор которого выполняется в строках 45—49. Конструктор этого класса также принимает два параметра. Обратите внимание на интересный факт: конструкторы обоих классов принимают перечисления цветов, с помощью которых в программе можно установить цвет лошади или цвет перьев у птицы. В результате, когда вы попытаетесь установить цвет Пегаса, может возникнуть проблема в работе программы, которая обсуждается несколько ниже. Класс Pegasus объявляется в строках 50—63, а его конструктор — в строках 65—75. Инициализация объекта Pegasus выполняется тремя строками программы. Сначала конструктор класса Horse определяет цвет и рост. Затем конструктор класса Bird инициализируется цветом перьев и логической переменной. Наконец, происходит инициализация переменной-члена itsNumberBelievers, относящейся к классу Pegasus. После всех этих операций вызывается конструктор класса Pegasus. В функции main() создается указатель на класс Pegasus, который используется для получения доступа к функциям-членам базовых объектов. Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:— Разгрузит мастера, специалиста или компанию; — Позволит гибко управлять расписанием и загрузкой; — Разошлет оповещения о новых услугах или акциях; — Позволит принять оплату на карту/кошелек/счет; — Позволит записываться на групповые и персональные посещения; — Поможет получить от клиента отзывы о визите к вам; — Включает в себя сервис чаевых. Для новых пользователей первый месяц бесплатно. Зарегистрироваться в сервисе
|