Стефан Дэвис - С++ для чайников .

Тут можно читать онлайн Стефан Дэвис - С++ для чайников . - бесплатно полную версию книги (целиком) без сокращений. Жанр: sci_tech, издательство Издательский дом Вильямс. Компьютерное издательство Диалектика, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    С++ для чайников .
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс. Компьютерное издательство Диалектика
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    0-7645-6852-3, 978-5-8459-0723-3
  • Рейтинг:
    4/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Стефан Дэвис - С++ для чайников . краткое содержание

С++ для чайников . - описание и краткое содержание, автор Стефан Дэвис, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
empty-line
1
empty-line
4

С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)

С++ для чайников . - читать книгу онлайн бесплатно, автор Стефан Дэвис
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

_________________

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

Конструирование нескольких объектов...192

Каждый элемент массива конструируется отдельно. Внесём в программу Constructor небольшие изменения.

//

/* ConstructArray — пример вызова конструкторов */

/* для массива объектов */

//

#include

#include

#include

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 << "Создание массива из 5 объектов Student" << endl ;

Student s[ 5 ] ;

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

system( "PAUSE" ) ; return 0 ;

}

Вывод этой программы выглядит следующим образом:

Создание массива из 5 объектов Student Конструируем Student Конструируем - фото 220

Создание массива из 5 объектов Student

Конструируем Student

Конструируем Student

Конструируем Student

Конструируем Student

Конструируем Student

Press any key to continue...

Конструирование составных объектов...192

Если класс имеет данные-члены, которые являются объектами другого класса, конструкторы для этих объектов также будут вызваны автоматически. Рассмотрим следующий пример, в который добавлены команды вывода сообщений, позволяющие увидеть, в каком порядке создаются объекты.

_________________

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

//

/* ConstructMembers — объекты-члены класса */

/* конструируются до конструирования */

/* класса, содержащего эти объекты */

//

#include

#include

#include

using namespace std ;

class Course

{

public :

Course( ) /* пятый ход */

{

cout << "Конструируем Course" << endl ;

}

} ;

class Student

{

public :

Student( ) /* второй ход */

{

cout << "Конструируем Student" << endl ;

semesterHours = 0 ;

gpa = 0.0 ;

}

protected :

int semesterHours ;

float gpa ;

} ;

class Teacher

{

public :

Teacher( ) /* шестой ход */

{

cout << "Конструируем Teacher" << endl ;

}

protected :

Course c ; /* четвёрый ход */

} ;

class TutorPair

{

public :

TutorPair( ) /* седьмой ход */

{

cout << "Конструируем TutorPair" << endl ;

noMeetings = 0 ;

}

protected :

Student student ; /* первый ход*/

Teacher teacher ; /* третий ход */

int noMeetings ;

} ;

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

{

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

cout << "Создаём объект TutorPair" << endl ;

TutorPair tp ;

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

system( "PAUSE" ) ; return 0 ;

}

_________________

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

В результате работы этой программы на экран будут выведены следующие сообщения:

Создаём объект TutorPair Конструируем Student Конструируем Course - фото 221

Создаём объект TutorPair

Конструируем Student

Конструируем Course

Конструируем Teacher

Конструируем TutorPair

Press any key to continue...

Создание объекта tp в main( ) автоматически вызывает конструктор TutorPair . Перед тем как управление будет передано телу конструктора TutorPair , вызываются конструкторы для объектов-членов student и teacher .

Конструктор Student вызывается первым, поскольку объект этого класса объявлен первым. Затем вызывается конструктор Teacher .

Конструирование члена ' с ' класса Teache r ( тип этого члена — Course ) является частью процесса построения объекта класса Teacher . Каждый объект внутри класса должен быть сконструирован до того, как будет вызван конструктор класса-контейнера ( в противном случае этот конструктор не будет знать, в каком состоянии находятся члены-данные ).

Только после создания всех этих объектов управление переходит к конструктору класса TutorPair , который теперь может конструировать оставшуюся часть объекта.

Это не означает чтоTutorPair отвечает за инициализациюStudent иTeacher - фото 222

«Это не означает, чтоTutorPair отвечает за инициализациюStudent иTeacher . Каждый класс отвечает за инициализацию своего объекта, где бы тот ни создавался.»

[ Помни! ]

►Что такое деструктор...194

Объекты класса уничтожаются так же, как и создаются. Если класс может иметь конструктор для выполнения начальных установок, то он может содержать и специальную функцию для уничтожения объекта. Такая функция-член называется деструктором.

Зачем нужен деструктор...194

Класс может затребовать для своего объекта некоторые ресурсы с помощью конструктора; эти ресурсы должны быть освобождены при уничтожении объекта. Например, если конструктор открывает файл, перед окончанием работы с объектом класса или программы этот файл следует закрыть. Возможен и другой вариант: если конструктор берёт память из кучи, то она должна быть освобождена перед тем, как объект перестанет существовать. Деструктор позволяет делать это автоматически, не полагаясь на вызов необходимых функций-членов в программе.

Работа с деструкторами...194

Деструктор имеет то же имя, что и класс, но только с предшествующим ему символом тильды ( ~ ) ( С++ последователен и здесь: ведь символ тильды не что иное, как символ оператора "нет", т.е. деструктор — это отрицание конструктора ).

_________________

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

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

class Student

{

public :

Student( )

{

semesterHours = 0 ;

gpa = 0.0 ;

}

~Student( )

{

/* Все используемые ресурсы освобождаются здесь */

}

/* ...остальные открытые члены... */

protected :

int semesterHours ;

float gpa ;

} ;

Деструктор вызывается автоматически, когда объект уничтожается или, если говорить языком С++, происходит его деструкция. Чтобы избежать тавтологии ( "деструктор вызывается для деструкции объекта" ), я по возможности старался не применять этот термин. Можно также сказать "когда объект выходит из области видимости". Локальный объект выходит из области видимости, когда функция, создавшая его, доходит до команды return . Глобальный или статический объект выходит из области видимости, когда прекращается работа программы.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стефан Дэвис читать все книги автора по порядку

Стефан Дэвис - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




С++ для чайников . отзывы


Отзывы читателей о книге С++ для чайников ., автор: Стефан Дэвис. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x