Выбрать главу

    class Course

    {

        public :

            Course( )    { cout << "Конструктор Course" << endl ; }

            ~Course( ) { cout << "Деструктор Course" << endl ; }

    } ;

    class Student

    {

        public :

            Student( )

            {

                cout << "Конструктор Student" << endl ;

                semesterHours = 0 ;

                gpa = 0.0 ;

_________________

195 стр. Глава 16. Создание и удаление объектов

            }

            ~Student( ) { cout << "Деструктор Student" << endl ; }

        protected :

            int semesterHours ;

            float gpa ;

    } ;

    class Teacher

    {

        public :

            Teacher( )

            {

                cout << "Конструктор Teacher" << endl ;

                pC = new Course ;

            }

            ~Teacher( )

            {

                cout << "Деструктор Teacher" << endl ;

                delete pC ;

            }

        protected :

            Course* pC ;

    } ;

    class TutorPair

    {

        public :

            TutorPair( )

            {

                cout << "Конструктор TutorPair" << endl ;

                noMeetings = 0 ;

            }

            ~TutorPair( ) { cout << "Деструктор TutorPair" << endl ; }

        protected :

            Student student ;

            Teacher teacher ;

            int noMeetings ;

    } ;

    TutorPair* fn( )

    {

        cout << "Создание объекта TutorPair в функции fn( )"

               << endl ;

        TutorPair tp ;

        cout << "Создание объекта TutorPair в куче" << endl ;

        TutorPair* pTP = new TutorPair ;

        cout << "Возврат из функции fn ( )" << endl ;

        return pTP ;

    }

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

    {

        setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */

        /* Вызов функции fn( ) и возврат объекта TutorPair в куче */

        TutorPair* pTPReturned = fn( ) ;

        cout << "Получен объект в куче" << endl ;

        delete pTPReturned ;

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

        system( "PAUSE" ) ; return 0 ;

    } 

_________________

196 стр. Часть 3. Введение в классы

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

При выполнении программы вы увидите на экране следующее.

 

    Создание объекта TutorPair в функции fn( )

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

    Конструктор Teacher

    Конструктор Course

    Конструктор TutorPair

    Создание объекта TutorPair в куче

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

    Конструктор Teacher

    Конструктор Course

    Конструктор TutorPair

    Возврат из функции fn( )

    Деструктор TutorPair

    Деструктор Teacher

    Деструктор Course

    Деструктор Student

    Получен объект в куче

    Деструктор TutorPair

    Деструктор Teacher

    Деструктор Course

    Деструктор Student

    Press any key to continue...