170 похожих чатов

В каком случае надо использовать такое объявление деструктора: virtual ~type() =

default;

?

22 ответов

18 просмотров

это объявление виртуального деструктора. Там где требуется, как минимум в виртуальных классах

d7d1cd- Автор вопроса

чтобы не писать пустое тело реализации, если на этом уровне нет никаких динамических ресурсов, которые надо освобождать или все динамические ресурсы находятся под управлением других объектов (по типу unique_ptr и т.п.)

d7d1cd- Автор вопроса
Anatoly Shirokov
чтобы не писать пустое тело реализации, если на эт...

А если в иерархии классов в одном классе пишут virtual ~deriv() = default;, в другом пишут virtual ~deriv2() {} в третьем вообще не объявляют деструктор никак, то это норм или могут быть проблемы?

никаких, главное, чтобы пустое или дефолтное тело было осознанным: у тебя все динамические ресурсы под контролем

d7d1cd
А если в иерархии классов в одном классе пишут vir...

главное, чтобы оно в базовом классе было, через указатель на который все эти наследники полиморфно педалируются

d7d1cd
А если в иерархии классов в одном классе пишут vir...

если где-то по цепочке наследований будет в реализации выделение памяти, то нужно в этом виртуальном деструкторе его высвободить. Просто принято его явно указывать, даже пустой, чтобы было очевидно что память не выделяется

Anatoly Shirokov
никаких, главное, чтобы пустое или дефолтное тело ...

А есть разница между пустым и дефолтным телом?

d7d1cd- Автор вопроса
Anatoly Shirokov
нет, по сути.

А вот для конструкторов где-то читал/видел, что это не так и пустой конструктор это не то же самое, что объявленный со словом default.

Anatoly Shirokov
нет, по сути.

Привет , основной акк попал в бан из за спама . Можно его как ни будь вытащить ?

d7d1cd
Смущает default. Зачем его тут употреблять?

Чтобы не писать пустое тело деструктора явно и не делать отдельно определение этой функции-члена

d7d1cd- Автор вопроса

По теме default или пустое тело для конструктора. Пример. Спасибо Константину Владимирову.

d7d1cd- Автор вопроса
d7d1cd
По теме default или пустое тело для конструктора. ...

Я же правильно понимаю, что тут каст Bar в int - это UB?

d7d1cd- Автор вопроса
Sergey Anisimov
Да.

Скажите, а есть ли подвох с деструктором с пустым телом и деструктором с default?

d7d1cd
Скажите, а есть ли подвох с деструктором с пусты...

Пустотелый остается нетривиальным, тривиальность разрушения - одно из необходимых условий для trivially-copyable, trivial и implicit-lifetime. Эти свойства, в свою очередь, позволяют многие неявные операции с лайфтаймами выполнять.

Michael
Почему?

Вычисление (lval->rval) indeterminate value у Bar::x.

Sergey Anisimov
Вычисление (lval->rval) indeterminate value у Bar:...

UB происходит в тот момент, когда мы используем indeterminate value и при этом не важно как?

Michael
UB происходит в тот момент, когда мы используем in...

Когда оно "вычисляется", да. Вычисление - это lval->rval преобразование (получение элемента множества значений, соответствующего текущей репрезентации значения). Подробно про это (и исключения из правила) здесь.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта