Я изначально разместил это как вопрос только о деструкторах, но теперь я добавляю рассмотрение конструктора по умолчанию. Вот исходный вопрос:
Если я хочу дать моему классу деструктор, который является виртуальным, но в противном случае то же самое, что и для компилятора, я могу использовать
=default
:class Widget { public: virtual ~Widget() = default; };
Но похоже, что я получаю тот же эффект, что и при типизации пустое определение:
class Widget { public: virtual ~Widget() {} };
Есть ли способ, которым эти два определения ведут себя по-другому?
На основе ответов, отправленных для этого вопроса, ситуация для конструктора по умолчанию выглядит схожей. Учитывая, что для деструкторов практически нет разницы в значении между "=default
" и "{}
", аналогично ли разница между этими опциями для конструкторов по умолчанию практически не различается? То есть, предполагая, что я хочу создать тип, в котором объекты такого типа будут созданы и уничтожены, почему я хочу сказать
Widget() = default;
вместо
Widget() {}
?
Извиняюсь, если этот вопрос повторяется после того, как его оригинальная публикация нарушает некоторые правила SO. Публикация почти идентичного вопроса для конструкторов по умолчанию показала мне менее желательный вариант.