Junior — Middle
119
Programlama veya sistem tasarımında beş kuralı kavramını açıklayabilir misiniz?
Sorulan şirketler
ГК Адепт
AI'dan gelen yanıt
sobes.tech yapay zeka
Правило пяти (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; }
};