Что такое «= удалить»?
-
02-10-2019 - |
Вопрос
Что означают эти две странные строки кода?
thread_guard(thread_guard const&) = delete;
thread_guard& operator=(thread_guard const&) = delete;
Решение
А =delete
— это новая функция C++0x.Это означает, что компилятор должен немедленно прекратить компиляцию и сообщить, что «эта функция удалена», как только пользователь использует такую функцию (см. также: функции по умолчанию и удаленные функции - контроль значений по умолчанию часто задаваемых вопросов по C++0x Бьярна Страуструпа).
А thread_guard(thread_guard const&)
является конструктором копирования, и thread_guard& operator=(thread_guard const&)
является конструктором присваивания.Таким образом, эти две строки вместе отключают копирование thread_guard
экземпляры.
Другие советы
Это новый синтаксис C ++ 0x для отключения определенных функций класса. Видеть Википедия Например. Здесь вы говорите этот класс thread_guard
не является ни копией, ни назначенным.