На GCC версии 4.6 я получил это
Base constructor
Derived constructor
Member constructor
****
Derived Destroyed
Member Destroyed
Base Destroyed
Так что, похоже, он работает
На заметку о том, что ваш базовый деструктор должен быть виртуальным
virtual ~ID(){}
таким образом, когда у вас есть только ссылка на базу, которую вы получили, она все равно будет чисто удалена.
В примечании, пожалуйста, не используйте определения, подобные этому, если у вас нет, также оборачивая mem в смарт.точка тоже хорошая идея.Как auto_ptr в c ++ 98 (в идеале, ptrs boost) или unique_ptr в c ++ 11.