Sobes.tech
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; }
};