Урок посвящен трем важным концепциям C++: конструкторам, деструкторам и ключевому слову this. Разберем их назначение и практическое использование.
Конструкторы
Конструкторы — специальные методы (функции), автоматически вызываемые при создании объекта класса. Они позволяют инициализировать поля объекта. Для создания конструктора необходимо:
- Использовать модификатор доступа public. Если конструктор объявлен как private или protected, доступ к нему извне класса запрещен, и создание объектов становится невозможным.
- Указать имя конструктора, идентичное имени класса.
- Не указывать тип возвращаемого значения (в отличие от обычных методов).
Пример пустого конструктора для класса Building:
class Building {
public:
Building() {} // Пустой конструктор
// ... остальной код класса ...
};
Пустой конструктор ничего не делает, но неявно присутствует в каждом классе. Он вызывается при создании объекта без параметров.
Конструктор может принимать параметры для инициализации полей:
class Building {
public:
Building(int year, std::string name) : year(year), name(name) {} // Конструктор с параметрами
// ... остальной код класса ...
private:
int year;
std::string name;
};
Этот конструктор принимает год постройки (year) и название (name), устанавливая их значения. Без передачи параметров возникнет ошибка компиляции.
Пример создания объекта с параметрами:
Building school(2000, "School");
Вместо инициализации списка можно использовать метод внутри конструктора:
class Building {
public:
Building(int year, std::string name) { setData(year, name); }
void setData(int year, std::string name) { this->year = year; this->name = name; }
// ... остальной код класса ...
private:
int year;
std::string name;
};
Перегрузка конструкторов: Можно создать несколько конструкторов с разным количеством или типом параметров. Компилятор выберет подходящий конструктор в зависимости от переданных параметров.
Пример перегрузки:
class Building {
public:
Building() {} // Конструктор по умолчанию
Building(int year, std::string name) { setData(year, name); }
Building(int year) { this->year = year; std::cout << "Данные установлены" << std::endl; }
// ... остальной код класса ...
private:
int year;
std::string name;
};
Деструкторы
Деструкторы — специальные методы, автоматически вызываемые при уничтожении объекта. Они противоположны конструкторам. Деструктор вызывается, когда объект выходит из области видимости или явно удаляется с помощью delete. В деструкторе обычно размещают код, освобождающий ресурсы (закрытие файлов, подключений к базам данных и т.д.).
Пример деструктора:
class Building {
public:
~Building() { std::cout << "Delete object" << std::endl; }
// ... остальной код класса ...
};
Этот деструктор выводит сообщение «Delete object» при уничтожении объекта.
Указатель this
Ключевое слово this — указатель на текущий объект класса. Оно используется для явного указания на поля или методы текущего объекта, особенно когда имена параметров совпадают с именами полей.
Пример использования this:
class Building {
public:
Building(int year, std::string name) : year(year), name(name) {} //Конструктор с использованием this
// ... остальной код класса ...
private:
int year;
std::string name;
};
this->year = year; явно указывает, что значение параметра year присваивается полю year текущего объекта. Использование this устраняет неоднозначность и повышает читаемость кода. this используется в конструкторах и методах класса.
Урок рассмотрел конструкторы, деструкторы и ключевое слово this. Понимание этих концепций необходимо для эффективной работы с классами в C++. Конструкторы инициализируют объекты, деструкторы освобождают ресурсы, а this упрощает работу с полями и методами внутри класса.