Запрет копирования в 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
и убедитесь, что программа с одним объектом
собирается, а строка копии - нет.