Конструктор – метод класса, который автоматически вызывается после выделения памяти под объект (после создания объекта).
Деструктор – метод класса, который автоматически вызывается перед освобождением памяти из под объекта (перед уничтожением объекта).
Виды конструкторов:
Конструкторы по умолчанию (без параметров);
Конструкторы с параметрами;
Конструкторы копирования.
25.11.2016
12
Конструктор используется для инициализации полей объекта, а также для выделения памяти для динамических полей объекта (т. е. полей, память под которые необходимо выделять на этапе выполнения программы).
Основные свойства конструктора: имеет тоже имя, что и класс; не может возвращать значение.
Конструкторы можно перегружать для различных вариантов инициализации объектов класса.
Замечание. В С++ методы класса могут быть перегружены, т. е. иметь одинаковые имена, но разные списки параметров.
Если в классе отсутствует конструктор, то компилятором автоматически создается конструктор по умолчанию (конструктор без параметров), который не выполняет инициализацию полей объекта класса.
Если класс имеет конструктор с параметрами, то конструктор без параметров (конструктор по умолчанию) автоматически не создается, поэтому, если он необходим, то его необходимо создавать явно (т. е. перегрузить конструктор с параметрами).
Деструктор используется для выполнения тех действий, которые необходимо выполнить перед уничтожением объекта, например, освобождает память, выделенную конструктором для динамических полей. Имя деструктора совпадает с именем класса и начинается с символа тильда (~). Деструктор не имеет параметров и не может возвращать значение. Если деструктор не объявлен явно, он, как и конструктор, создается компилятором как пустой метод.
Класс может иметь только один деструктор, перегрузка деструкторов запрещена.
Замечание: В примере 2 (на след. слайде) модификатор const в параметрах конструктора защищает эти параметры от случайных (ненамеренных) изменений. В случае изменения этих параметров компилятор выдает сообщение.
25.11.2016
13
Пример2: Объявление класса с конструкторами и деструктором
// cat.h
// объявление класса
class Cat
{ private: int age; // возраст
char name[20]; // кличка
public:
Cat(); //конструктор_1
Cat(const char Name[], int Age); //конструктор_2
~Cat(){}; //деструктор
int getAge();
void setAge(int Age);
void Meow();
};
25.11.2016
14
Пример2: Определение конструкторов и других методов класса