Почему я должен удалить конструктор перемещения и переместить оператора назначения в Синглтоне?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему я должен удалить конструктор перемещения и переместить оператора назначения в Синглтоне?

Сообщение Anonymous »

У меня есть следующая реализация политики в одиночной политике: < /p>

template
class Singleton
{
Singleton(){}; // so we cannot accidentally delete it via pointers
Singleton(const Singleton&) = delete; // no copies
Singleton& operator=(const Singleton&) = delete; // no self-assignments
Singleton(Singleton&&) = delete; // WHY?
Singleton& operator=(Singleton&&) = delete; // WHY?
public:
static T& getInstance() // singleton
{
static T instance; // Guaranteed to be destroyed.
// Instantiated on first use.
// Thread safe in C++11
return instance;
}
};
< /code>

, который я затем использую с помощью любопытно повторяющегося шаблона (CRTP) < /p>

class Foo: public Singleton // now Foo is a Singleton
{
friend class Singleton;
~Foo(){}
Foo(){};
public:
// rest of the code
};
< /code>

Я не могу понять, почему я должен удалить конструктор движения и оператор назначения. Можете ли вы привести мне один пример, где я в конечном итоге сломаю Синглтон, если я не удаляю (вообще не определяю) переезд CTOR и оператора назначения?

Подробнее здесь: https://stackoverflow.com/questions/237 ... -singleton
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»