Конструирование одного объекта...190
Класс с использованием конструктора продемонстрирован в следующем примере.
//
/* Constructor — пример вызова конструктора */
//
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std ;
class Student
{
public :
Student( )
{
cout << "Конструируем Student" << endl ;
semesterHours = 0 ;
gpa = 0.0 ;
}
/* ...прочие открытые члены... */
protected :
int semesterHours ;
float gpa ;
} ;
int main ( int nNumberofArgs , char* pszArgs[ ] )
{
setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */
cout << "Создание нового объекта Student" << endl ;
Student s ;
cout << "Создание нового объекта Student в куче" << endl ;
Student* pS = new Student ;
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ; return 0 ;
}
_________________
190 стр. Часть 3. Введение в классы
В этом примере компилятор сам вызывает конструктор Student::Student( ) в том месте, где объявляется объект s. Тот же эффект имеет и создание объекта Student в куче, что видно из вывода данной программы.
Создание нового объекта Student
Конструируем Student
Создание нового объекта Student в куче
Конструируем Student
Press any key to continue...
Этот простой конструктор реализован в виде встроенной ( inline ) функции. Конструктор можно создать и как обычную функцию с телом, вынесенным из объявления класса:
class Student
{
public :
Student( ) ;
/* ...Остальные открытые члены... */
protected :
int semesterHours ;
float gpa ;
} ;
Student::Student( )
{
cout << "Конструируем Student " ;
semesterHours = 0 ;
gpa = 0.0 ;
}
«В данном примере добавлена небольшая функция main( ), чтобы эту тестовую программу можно было запустить. Настоятельно рекомендую пройти эту программу в пошаговом режиме отладчика перед тем, как двигаться дальше. О том, как это сделать, вы можете прочесть в главе 10 , "Отладка программ на С++".»
[Советы]
Выполняя этот пример в пошаговом режиме, дойдите до строки с объявлением объекта s. Выполните команду отладчика Шаг внутрь ( Step into ), и управление как по волшебству перейдёт к функции Student::Student( ). Продолжайте выполнение конструктора в пошаговом режиме. Когда функция закончится, управление перейдёт к следующей за объявлением объекта класса строке.
«В некоторых случаях команда Шаг внутрь ( Step into ) выполняет весь конструктор сразу, за один шаг. В таком случае вы можете просто установить в нём точку останова, что сработает в любом случае.»
[Атас!]
_________________
191 стр. Глава 16. Создание и удаление объектов
Больше книг — больше знаний!
Заберите 20% скидку на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ