Junior — Middle
116
Poți explica conceptul regulii de cinci în programare sau proiectare de sisteme?
Companiile au fost întrebate
ГК Адепт
Răspuns de la 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; }
};