Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1
Кент Рейсдорф. BORLAND C++BUILDER. Страница 81
В большинстве случаев не имеет значения, где вы инициализируете члены-данные — в теле конструктора или списке. Лично я предпочитаю использовать список инциализаторов.
Деструктор (destructor) — это специальная функция, которая автоматически вызывается перед уничтожением объекта.
Деструктор можно рассматривать как противоположность конструктору. Обычно он используется для освобождения памяти, выделенной классу, или вы- полняет другие задачи по наведению порядка после работы класса. Класс может иметь не более одного деструктора. Наличие деструктора не является обязательным. Деструктор не возвращает никакого значения и не принимает аргументов. Его имя образуется из имени класса с добавлением впереди тильды (~).
Как было сказано, деструктор вызывается непосредственно перед разрушением класса. Класс может быть разрушен либо при выходе из области видимости (в случае размещения в стеке), либо в результате применения оператора delete (в случае динамического размещения). В любом случае, вызов деструктора будет последним действием перед окончательным исчезновением класса.
Далее приведен измененный код для класса Rect:
Конструктор в модифицированной версии класса Rect выделяет место для символьного массива с именем text, а деструктор освобождает эту память. (Я не вижу особой необходимости включать в этот класс текст, но кто знает!) Повторю еще раз, что деструктор используется для приведения среды в исходное состояние перед разрушением экземпляра класса.
Члены-данные класса — это просто переменные, объявленные в описании класса. Их областью видимости по умолчанию является класс. По сравнению с членами-данными структур, вы можете управлять доступом к членам-данным класса, объявляя их как private, public или protected. Независимо от установленного уровня доступа, члены-данные класса могут использоваться всеми функциями этого класса. Уровень доступа определяет видимость членов-данных вне класса. Например, к закрытым или защищенным членам-данным доступ извне невозможен. Обращение к открытым членам-данным возможно только через класс. Рассмотрим, например, класс Rect, объявленный ранее. В нем отсутствуют открытые члены-данные. При попытке обращения к переменным этого класса вы получите сообщение об ошибке: