With respect to the acceptable practice of calling embedded object's Free () in the destructor, in C++ all fully constructor embedded objects are automatically destroyed; only partially constructed aren't.
As far as destruction is concerned, there isn't much difference between Delphi and C++.