S>Насколько нижеприведённый код корректен. Всегда ли все данные базавого класса находятся перед данными, объявленными в наследнике.
Необязательно.
А что такого в твоем примере? Ты мог бы обойтись и без преобразования. Вот если б ты указатель на B * сначала к void * привел, а потом к А — ты такое имел в виду?
Of course, the code must be complete enough to compile and link.