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

«Исторически все заголовочные файлы имеют расширение .h, но эта традиция изменена текущим стандартом С++. Теперь системные заголовочные файлы не имеют вообще никакого расширения. Тем не менее многие программисты продолжают использовать расширение .h, которое позволяет сразу отделить заголовочные файлы от файлов с исходными текстами.»

[Советы]

Полученный в результате файл Student.h выглядит следующим образом.

    /* Student — базовый класс */

    #ifndef _STUDENT_

    #define _STUDENT_

    namespace Schools

    {

        class Student

        {

          public :

            Student( char* pszName , int nID ) ;

            virtual char* display( ) ;

          protected :

            /* Имя студента */

            char* pszName ;

            int nID ;

        } ;

    }

    #endif

#ifndef представляет собой директиву препроцессора, такую же, как и, например, директива #include. Данная директива гласит, что включать следующие за ней строки следует только в том случае, когда её аргумент _STUDENT_ не определён. При первом включении файла _STUDENT_ не определён, но тут же определяется директивой #define_STUDENT_. Это приводит к тому, что включение файла Student.h в программу будет выполнено только один раз, независимо от того, сколько директив #include встретится в программе.

_________________

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

<p id="chapter22.3.2"><strong><emphasis>Определение пространства имён...261</emphasis></strong></p>

Следующая особенность программы состоит в том, что класс Student определён в пространстве имён Schools.

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

Классы, составляющие пространство имён Schools, выглядят как члены одной семьи. Один класс из пространства имён может обращаться к другому классу из этого же пространства имён непосредственно, в то время как внешние классы должны явно указывать при обращении пространство имён.

«Ещё одной причиной для использования пространств имён служат так называемые "коллизии имён", которых надо избегать. Например, класс Grade из пространства имён Schools никак не влияет на возможность использования этого же имени для класса в пространстве имён FoodProduction

[Советы]

<p id="chapter22.3.3"><strong><emphasis>Реализация класса student...261</emphasis></strong></p>

Реализация класса Student помещена мною в файл Student.срр.

    /* Student — реализация методов класса Student */

    #include

    #include

    #include

    #include

    #include "student.h"

    namespace Schools

    {

        Student::Student( char* pszNameArg , int nIDArg )

            : nID( nIDArg )

        {

            pszName = new char[ strlen( pszNameArg ) + 1 ] ;

            strcpy( pszName , pszNameArg ) ;

        }

        /* display — возвращает описание студента */

        char* Student::display( )

        {

            /* Копируем имя студента в блок памяти в куче, который возвращается вызывающей функции */

            char* pReturn = new char[ strlen( pszName ) + 1 ] ;

            strcpy( pReturn , pszName ) ;

            return pReturn ;

        }

    }

Конструктор Student копирует имя и идентификатор студента, переданные ему в качестве аргументов. Виртуальная функция display( ) возвращает строку с описанием объекта Student.

Компиляция файла Student.срр даёт промежуточный файл, который затем может быть быстро объединён с другими файлами в завершённую выполнимую программу.

_________________

261 стр. Глава 22. Разложение классов

«По историческим причинам в большинстве сред С++ этот промежуточный файл имеет расширение .obj или ( "объектный файл" ).»

[Технические подробности]

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

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

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

Разработка приложений в среде 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 имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.[Материал из Википедии]

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

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