Back to questions
Junior — Middle
87
Можете объяснить концепцию правила пяти в программировании или проектировании систем?
Companies where asked
ГК Адепт
Answer from AI
sobes.tech AI
Правило пяти (Rule of Five) в C++ связано с управлением ресурсами и определяет, что если в классе нужно явно определить один из следующих методов:
- Деструктор
- Конструктор копирования
- Оператор присваивания копированием
- Конструктор перемещения
- Оператор присваивания перемещением
то, скорее всего, нужно определить все пять, чтобы правильно управлять ресурсами и избежать проблем с утечками памяти или двойным освобождением.
Это правило расширяет классическое правило трёх (деструктор, конструктор копирования, оператор присваивания копированием) с появлением семантики перемещения в C++11.
Пример:
class MyClass {
int* data;
public:
MyClass() : data(new int[10]) {}
~MyClass() { delete[] data; }
MyClass(const MyClass& other) { /* копирование данных */ }
MyClass& operator=(const MyClass& other) { /* копирование данных */ return *this; }
MyClass(MyClass&& other) noexcept { /* перемещение данных */ }
MyClass& operator=(MyClass&& other) noexcept { /* перемещение данных */ return *this; }
};