Читаем С++ для "чайников" . полностью

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

    class InvalidArgumentException : public Exception

    {

    public :

        InvalidArgumentException( int arg , char*pFile , int nLine )

              : Exception( "Некорректный аргумент" , pFile , nLine )

        {

              invArg = arg ;

        }

        virtual void display( ostream& out )

        {

              Exception::display( out ) ;

              out << "Аргумент " << invArg << endl ;

        }

    protected :

        int invArg ;

    }

Вызывающая функция автоматически обработает новое исключение, поскольку InvalidArgumentException ЯВЛЯЕТСЯ Exception, а функция-член display( ) — полиморфна.

_________________

297 стр. Глава 25. Обработка ошибок и исключения

<subtitle id="chapter26"><emphasis>Глава 26. МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ...298</emphasis></subtitle>

ОГЛАВЛЕНИЕ

        В этой главе...

►Механизм множественного наследования 298

►Устранение неоднозначностей множественного наследования 300

►Виртуальное наследование 301

►Конструирование объектов 306

►Отрицательные стороны множественного наследования 306

В иерархиях классов, которые рассматривались в этой книге, каждый класс наследовался от одного прародителя. Такое одиночное наследование подходит для описания большинства объектов реального мира. Однако некоторые классы представляют собой сочетание нескольких классов в одном.

Примером такого класса может служить диван-кровать. Как видно из названия, это и диван, и кровать ( правда, кровать не очень удобная ). Таким образом, этот предмет интерьера наследует свойства как дивана, так и кровати. В терминалах С++ эту ситуацию можно описать следующим образом: класс может быть наследником более чем одного базового класса. Такое наследование называется множественным.

<p id="chapter26.1"><strong>►Механизм, множественного наследования...298</strong></p>

Чтобы увидеть множественное наследование в действии, я продолжу пример с диваном-кроватью. На рис. 26.1 приведена схема наследования дивана-кровати ( класс SleeperSofa ). Обратите внимание, что этот класс наследует свойства и от класса Bed ( Кровать ), и от класса Sofa ( Диван ), т.е. наследует свойства обоих классов.

   

Рис. 26.1. Иерархия классов дивана-кровати

_________________

298 стр. Часть 5. Полезные особенности

Программная реализация класса SleeperSofa выглядит следующим образом.

    //

    /* MultipleInheritance — класс, являющийся наследником */

    /*                        нескольких базовых классов */

    //

    #include

    #include

    #include

    using namespace std ;

    class Bed

    {

      public :

        Bed( ) { }

        void sleep( ) { cout << "Спим" << endl ; }

        int weight ;

    } ;

    class Sofa

    {

      public :

        Sofa( ) { }

        void watchTV( ) { cout << "Смотрим телевизор" << endl ; }

        int weight ;

    } ;

    /* SleeperSofa — диван-кровать */

    class SleeperSofa : public Bed , public Sofa

    {

      public :

        SleeperSofa( ) { }

        void foldOut( ) { cout << "Раскладываем диван-кровать"

                                << endl ; }

    } ;

    int main( int nNumberofArgs , char* pszArgs[ ] )

    {

            /* печать кириллицы, если Вы не установите программки gccrus.exe и g++rus.exe */

            setlocale ( LC_ALL , ".1251" ) ;

        SleeperSofa ss ;

        /* Посмотрим телевизор на диване... */

        ss.watchTV( ) ; /* Sofa::watchTV( ) */

        /* ...разложим его в кровать... */

        ss.foldOut( ) ; /* SleeperSofa::foldOut( ) */

        /* ...и ляжем спать */

        ss.sleep( ) ;

        /* Пауза для того, чтобы посмотреть на результат работы программы */

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных