Почему деструктор отключает генерацию неявных методов перемещения?C++

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

Сообщение Гость »


Читая этот блог, я пытался понять, что говорит правило нуля. ИМХО, там говорится, что если вы объявите свой собственный деструктор, не забудьте сделать конструктор перемещения и назначение перемещения по умолчанию.

Пример:

виджет класса { публика: ~Виджет(); // временный деструктор ... // нет функций копирования и перемещения }; "Добавление деструктора имеет побочный эффект, заключающийся в отключении генерации функций перемещения, но поскольку Виджет копируем, все код, который раньше генерировал ходы, теперь будет генерировать копии. В другими словами, добавление деструктора в класс привело к предположительно эффективные ходы, которые следует молча заменить на предположительно менее эффективные копии".

Приведенный выше текст Скотта Мейерса в кавычках вызывает у меня некоторые вопросы:
[*]Почему объявление деструктора скрывает семантику перемещения? [*]Объявление/определение деструктора скрывает только семантику перемещения или копирования присвоение конструктора и копирования также скрывает семантику перемещения?
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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