Конструкторы
При создании объекта, например, 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++, обеспечивающие автоматическую инициализацию и очистку ресурсов при создании и уничтожении объектов. Они упрощают работу с классами и помогают избежать ошибок, связанных с неинициализированными переменными и утечкой памяти.