Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpOpCpDl 43 of 150 menu
◀ ▶

Запрет копирования в C++

Иногда копию объекта создавать нельзя: два объекта не должны делить один буфер. Тогда конструктор копирования и оператор присваивания помечают = delete. Такую функцию называют удаленной: строка с копированием не компилируется. Один объект по-прежнему создают обычным объявлением. Запишем класс с запретом копии:

class User { public: int id = 1; User() = default; User(const User& other) = delete; User& operator=(const User& other) = delete; };

Сейчас создадим один объект:

int main() { User user1; std::cout << user1.id << "\n"; return 0; }

Строка инициализации копией для такого класса отклоняется компилятором:

int main() { User user2 = user1; return 0; }

Запретите копирование в классе Token и убедитесь, что программа с одним объектом собирается, а строка копии - нет.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить