Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 81

В большинстве случаев не имеет значения, где вы инициализируете члены-данные — в теле конструктора или списке. Лично я предпочитаю использовать список инциализаторов.

Деструкторы

Деструктор (destructor) — это специальная функция, которая авто­матически вызывается перед уничтожением объекта.

Деструктор можно рассматривать как противоположность конструктору. Обычно он используется для освобождения памяти, выделенной классу, или вы- полняет другие задачи по наведению порядка после работы класса. Класс может иметь не более одного деструктора. Наличие деструктора не является обязатель­ным. Деструктор не возвращает никакого значения и не принимает аргументов. Его имя образуется из имени класса с добавлением впереди тильды (~).

Как было сказано, деструктор вызывается непосредственно перед разруше­нием класса. Класс может быть разрушен либо при выходе из области види­мости (в случае размещения в стеке), либо в результате применения оператора delete (в случае динамического размещения). В любом случае, вызов деструк­тора будет последним действием перед окончательным исчезновением класса.

Далее приведен измененный код для класса Rect:

Конструктор в модифицированной версии класса Rect выделяет место для символьного массива с именем text, а деструктор освобождает эту память. (Я не вижу особой необходимости включать в этот класс текст, но кто знает!) Повторю еще раз, что деструктор используется для приведения среды в ис­ходное состояние перед разрушением экземпляра класса.

Члены-данные

Члены-данные класса — это просто переменные, объявленные в описании класса. Их областью видимости по умолчанию является класс. По сравнению с членами-данными структур, вы можете управлять доступом к членам-данным класса, объявляя их как private, public или protected. Независимо от установ­ленного уровня доступа, члены-данные класса могут использоваться всеми функциями этого класса. Уровень доступа определяет видимость членов-дан­ных вне класса. Например, к закрытым или защищенным членам-данным доступ извне невозможен. Обращение к открытым членам-данным возможно только через класс. Рассмотрим, например, класс Rect, объявленный ранее. В нем отсутствуют открытые члены-данные. При попытке обращения к перемен­ным этого класса вы получите сообщение об ошибке:

Web-дизайн (с) 2010 All rights reserved