Реализация приложения...263

We use cookies. Read the Privacy and Cookie Policy

Два класса — Student и GraduateStudent — разнесены по отдельным исходным файлам и размещены в пространстве имён Schools. Я написал простенькую программу, использующую оба описанных класса.

    //

    /* SeparatedMain — демонстрационное приложение, */

    /*                 разделённое на части */

    //

    #include <cstdio>

    #include <cstdlib>

    #include <iostream>

    #include <string.h>

    #include "graduateStudent.h"

    #include "student.h"

    using namespace std ;

    /* using namespace Schools ; */

    using Schools::GraduateStudent ;

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

    {

        Schools::Student s( "Sophie Moore" , 1234 ) ;

        cout << "Student = " << s.display( ) << endl ;

        GraduateStudent gs( "Greg U. Waite" , 5678 ) ;

        cout << "Student = " << gs.display( ) << endl ;

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

        system( "PAUSE" ) ; return 0 ;

    }

_________________

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

Приложение включает заголовочные файлы Student.h и GraduateStudent.h, что даёт ему доступ к обоим рассмотренным классам.

Вы можете возразить, что включение GraduateStudent.h автоматически приводит к включению Student.h, однако не стоит полагаться на это — если вы хотите использовать какой-то класс, лучше включить соответствующий заголовочный файл независимо от других. Использование описанной ранее конструкции с #ifndef позволит избежать повторного включения заголовочного файла.

Заметим, что представленный модуль не является частью пространства имён Schools, так что при обращении функции main( ) к классу Student С++ не знает, где именно искать этот класс.

В связи с этим при обращении к классу следует использовать его полное имя, дабы избежать возможных неоднозначностей — т.е. имя, состоящее из имени пространства и имени класса: Schools::Student. Другой способ заключается в указании в начале модуля, какое именно пространство имён подразумевается программистом — так, инструкция

    using Schools::GraduateStudent ;

говорит о том, что далее все упоминания GraduateStudent относятся к пространству имён Schools.

Программист может получить такой же доступ ко всем членам пространства имён сразу, воспользовавшись командой

    using namespace Schools ;

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

    using namespace Schools ;

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

    {

        Schools::Student s( "Sophie Moore" , 1234 ) ;

        cout << "Student = " << s.display( ) << endl ;

        GraduateStudent gs( "Greg U. Waite" , 5678 ) ;

        cout << "Student = " << gs.display( ) << endl ;

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

        system( "PAUSE" ) ; return 0 ;

    }

«Использование в данной книге инструкции using namespace std ; связано с тем, что модули, составляющие стандартную библиотеку С++, входят в пространство имён std 

[Советы]