Специальные методы класса

Конструктор выделяет память для объекта класса и инициализи­рует данные-члены класса. Он вызывается автоматически для каждого объекта. Для того чтобы каждый класс имел в своем рас­поряжении конструктор, компилятор классов, кроме явно объяв­ленного конструктора, предоставляет конструктор по умолчанию. Создание объекта регулируется путем описания одного или не­скольких собственных конструкторов.

Для конструкторов существует несколько важных правил:

· Имя конструктора совпадает с именем его класса;

· Конструктор не имеет никакого возвращаемого значения (даже void);

· Классу без конструктора предоставляется конструктор по умолчанию;

· Если конструктор описан явно, то конструктор по умолчанию не генерируется;

· Конструкторы могут быть перегружены;

· Перегрузка чаще всего используется для передачи кон­структору аргументов, предназначенных для инициализа­ции данных-членов класса;

· Конструкторы не наследуются.

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

Для деструкторов действительны правила, аналогичные прави­лам для конструкторов:

· Имя деструктора также совпадает с именем его класса, но предваряется символом «~» (тильдой):

~имя_класса()

· Деструктор не имеет никакого возвращаемого значения (даже void);

· Деструктор не может быть описан с ключевым словом static и const;

· Если в классе деструктор явно не описан, то компилятор ге­нерирует деструктор по умолчанию;

· Деструктор не наследуется;

· Указатель на деструктор не может быть определен.

Деструкторы отличаются от конструкторов следующими особен­ностями:

· Деструкторам не могут передаваться аргументы, следова­тельно: деструкторы могут переопределяться, но не перегружаться, деструкторы могут описываться как virtual, деструкторы классов, производных от базовых классов, имеющих виртуальные деструкторы, автоматически стано­вятся виртуальными;

· Деструкторы могут вызываться явно;

· Деструктор в некоторых случаях должен быть обязательно задан явно (например, если область памяти выделена с по­мощью оператора new).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: