Что такое "= удалить"? - PullRequest
       19

Что такое "= удалить"?

7 голосов
/ 13 сентября 2010

Что означают эти две странные строки кода?

thread_guard(thread_guard const&) = delete;

thread_guard& operator=(thread_guard const&) = delete;

Ответы [ 2 ]

11 голосов
/ 13 сентября 2010

=delete - это новая функция C ++ 0x.Это означает, что компилятор должен немедленно прекратить компиляцию и выдать жалобу «эта функция удалена», как только пользователь использует такую ​​функцию (см. Также: функции по умолчанию и удаленные функции - управление значениями по умолчанию C++ 0x FAQ (Бьярн Страуструп).

thread_guard(thread_guard const&) - это конструктор копирования, а thread_guard& operator=(thread_guard const&) - конструктор присваивания.Поэтому эти две строки вместе отключают копирование thread_guard экземпляров.

10 голосов
/ 13 сентября 2010

Это новый синтаксис C ++ 0x для отключения определенных функций класса.См. wikipedia для примера.Здесь вы говорите, что класс thread_guard не является ни копируемым, ни назначаемым.

...