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...