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

        float average ;

    } ;

    class GraduateStudent : public Student

    {

      public :

        GraduateStudent( char *pName , Advisor& adv , float qG = 0.0 )

            : Student( pName ), advisor( adv ) , qualifierGrade(qG)

        {

            cout << "Конструктор GraduateStudent "

                 << pName

                 << endl ;

        }

        float qualifier( ) { return qualifierGrade ; }

      protected :

        Advisor advisor ;

_________________

235 стр. Глава 20. Наследование классов

        float qualifierGrade ;

    } ;

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

    {

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

             setlocale ( LC_ALL ,".1251" ) ;

        Advisor advisor ;

        /* Создание двух типов студентов */

        Student llu( "Су N Sense" ) ;

        GraduateStudent gs( "Matt Madox" , advisor , 1.5 ) ;

        /* Добавляем им оценки */

        llu.addCourse( 3 , 2.5 ) ;

        gs.addCourse( 3 , 3.0 ) ;

        // Выводим их

        cout << "Оценка Matt = "

             << gs.qualifier( )

             << endl ;

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

        system( "PAUSE" ) ; return 0 ;

    }

В этой программе продемонстрировано создание и использование двух объектов — Student и GraduateStudent. Вывод программы выглядит следующим образом.

    Конструктор Student Су N Sense

    Конструктор Student Matt Madox

    Конструктор GraduateStudent Matt Madox

    Добавляем оценку для Су N Sense

    Добавляем оценку для Matt Madox

    Оценка Matt = 1.5

    Press any key to continue...

<p id="chapter20.2.1"><strong><emphasis>Использование подкласса...236</emphasis></strong></p>

Класс Student определён как обычно. Определение класса GraduateStudent несколько отличается — наличием после имени класса двоеточия с последующим public Student. Тем самым класс GraduateStudent объявляется как подкласс класса Student.

«Ключевое слово public говорит о том, что может быть наследование protected, а также private — но эти вопросы лежат за пределами данной книги.»

[Советы]

Программисты любят вводить новые термины и придавать новые значения старым. Вот набор тождественных высказываний, описывающих одно и то же отношение между классами:

■■■

■ GraduateStudent — подкласс Student;

■ Student — базовый, или родительский класс для GraduateStudent;

■ GraduateStudent наследует Student;

■ GraduateStudent расширяет Student.

■■■

_________________

236 стр. Часть 4. Наследование

В качестве подкласса Student класс GraduateStudent наследует все его члены. Например, GraduateStudent имеет член name, хотя он объявлен в базовом классе. Однако подкласс может добавлять собственные члены, например, qualifierGrade.

Функция main( ) объявляет два объекта, типа Student и GraduateStudent, после чего вызывает функцию addCourse( ) для каждого из них, а потом — функцию qualifier( ), которая имеется только у подкласса.

<p id="chapter20.2.2"><emphasis><strong>Конструирование подкласса...237</strong></emphasis></p>

Хотя подкласс и имеет доступ к защищённым членам базового класса, а значит, может инициализировать их, было бы хорошо, если бы базовый класс всё же конструировал сам себя. В действительности так и происходит.

Перед тем как управление получает код, стоящий за открывающей фигурной скобкой класса GraduateStudent, оно передаётся конструктору по умолчанию класса Student ( поскольку другой конструктор не был указан ). Если бы класс Student был наследником другого класса, например Person, то конструктор этого класса вызывался бы до передачи управления конструктору Student. Подобно небоскребу, объект строится, начиная с "фундаментального" уровня в соответствии со структурой наследования классов и вызывая конструкторы всех классов, составляющих данный.

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

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

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

Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Язык программирования Euphoria. Справочное руководство
Язык программирования Euphoria. Справочное руководство

Euphoria (юфо'ри, также рус. эйфори'я, ра'дость) — язык программирования, созданный Робертом Крейгом (Rapid Deployment Software) в Канаде, Торонто. Название Euphoria — это акроним для «End-User Programming with Hierarchical Objects for Robust Interpreted Applications».Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана» с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib и оберток для wxWidgets, GTK+ и IUP. Euphoria имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.[Материал из Википедии]

Коллектив авторов

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