же класса, содержащих только методы?
https://codeshare.io/5wkg69
Там UB Вы создаёте класс Derived1, а кастуете его к Derived2
Но ведь классы отличаются только методами, полей не добавляется
lifetime Derived2 никогда не начинался
А зачем создавать проблемы себе и своим сокамандникам, если можно их не создавать?
Как бы все равно что в объектах, только методы или не только. Если реальный тип объекта не соответствует затребованному в cast - это UB
Определи каст между типами по человечески и кастуй сколько влезет
лучше через 2 статик каста через void*
Что тоже может запросто привести к UB.
да, но при этом проверяется что кастится указатель
Чем лучше-то? ЧТо в лоб, что по лбу...
тем что если не указатель подставить случайно - реинтерпрет ничего не скажет и будет увлекательный дебаг
а static_cast через void* ничего не скажет и будет увлекательный дебаг
если ты Derived* -> Base* прокастуешь через void* не скажет
а Derived -> Base*?
не представляю, в каком смысле это сработает в reinterpret_cast
ну это откомпилируется
преобразование std::ifstream в std::istream*?
Чот нихера https://godbolt.org/z/8WfrdY
auto a = 0xdead; char *b = reinterpret_cast<char*>(a);
не вижу тут Derived
ну в этом конкретном случае - когда типы свои - ругнется, не очень понятно только зачем в данном случае вообще реинтерпрет использовать?
Обсуждают сегодня