Назад к вопросам
Junior — Middle
83
Можете объяснить принцип правила трех или его суть?
Ответ от нейросети
sobes.tech AI
Правило трёх в C++ гласит: если в классе нужно явно определить один из трёх специальных методов — деструктор, конструктор копирования или оператор присваивания копированием, то, скорее всего, нужно определить все три. Это связано с управлением ресурсами (например, динамической памятью). Если класс владеет ресурсами, то для корректного копирования и освобождения ресурсов необходимо реализовать все три метода, чтобы избежать утечек памяти или двойного освобождения.
Пример:
class MyClass {
int* data;
public:
MyClass() : data(new int[10]) {}
~MyClass() { delete[] data; }
MyClass(const MyClass& other) {
data = new int[10];
std::copy(other.data, other.data + 10, data);
}
MyClass& operator=(const MyClass& other) {
if (this != &other) {
delete[] data;
data = new int[10];
std::copy(other.data, other.data + 10, data);
}
return *this;
}
};