C++ Урок 19: Конструкторы и деструкторы для начинающих

Конструкторы

При создании объекта, например, auto skoda или auto bmw, переменные класса не инициализируются автоматически. Инициализировать необходимые переменные сразу при создании объекта удобно с помощью конструкторов.

Конструкторы — простые элементы класса. Они должны быть объявлены как public, чтобы быть доступными при создании объекта. Конструктор имеет то же имя, что и класс, и не имеет возвращаемого типа.

Auto( ) {
  year = 2000;
  month = 12;
  day = 31;
}

Этот конструктор Auto() присваивает переменным year, month и day значения 2000, 12 и 31 соответственно. При создании объекта, конструктор автоматически вызывается и инициализирует эти переменные. Значения, конечно, можно изменять позже с помощью методов set.

Добавим вывод значений на экран через функцию get:

Auto( ) {
  year = 2000;
  month = 12;
  day = 31;
  get();
  std::cout << std::endl;
}

Теперь при создании объекта, например skoda, сначала вызовется конструктор, инициализирующий переменные, затем вызовется функция get, выводящая эти значения на экран.

Перегрузка конструкторов

Как и функции, конструкторы можно перегружать. Можно создать несколько конструкторов с разным количеством или типами параметров.

Например, добавим конструктор, принимающий три параметра:

Auto(int year, int month, int day) : year(year), month(month), day(day) {
  get();
  std::cout << std::endl;
}

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

Auto skoda(2015, 2, 13); // Вызов конструктора с параметрами
Auto bmw; // Вызов конструктора по умолчанию

Для объекта skoda выведутся значения, переданные в конструктор, а для bmw — значения из конструктора по умолчанию (2000, 12, 31).

Деструкторы

В отличие от конструктора, деструктор вызывается при уничтожении объекта (например, при завершении программы). Он объявляется с помощью символа тильды (~) перед именем класса.

~Auto() {
  std::cout << "Class is not working" << std::endl;
}

Этот деструктор выводит сообщение «Class is not working» на экран. Если в программе создано несколько объектов, деструктор вызывается для каждого из них.

Конструкторы и деструкторы — важные элементы класса в C++, обеспечивающие автоматическую инициализацию и очистку ресурсов при создании и уничтожении объектов. Они упрощают работу с классами и помогают избежать ошибок, связанных с неинициализированными переменными и утечкой памяти.

Что будем искать? Например,программа