На ответ на сообщение в блоге Раймонда Чена ,
Спрашивающий указал
Раймонд, я считаю, что пример C ++ неверен, поскольку позиция подобъекта базового класса в производном классе не указан в соответствии со стандартом ISO C ++ 2003 (10-3, стр. 168), и вы предполагаете что подобъект базового класса всегда находится в начале. C пример тоже подойдет для C ++, так что я бы придерживался его.
Раймонд ответил
[Код не делает этого предположения. Вот почему так важно используйте static_cast вместо reinterpret_cast. Попробуйте: добавить виртуальный на OVERLAPPED (так что впереди идет vtable) и посмотрите, что компилятор делает. -Рэймонд]
Я догадался, прочитав его комментарии. В примере можно использовать static_cast, а вот reinterpret_cast - нет. Поскольку reinterpret_cast не конвертируется в vtable. Я правильно понимаю?
Хотя, если я использую здесь приведение в стиле C (а не reinterpret_cast), может ли оно также пойти не так?
Я перечитал объяснение приведения типов в More Effective C ++, чтобы понять это. Но ответа по этому поводу не было.