That's why I still think the old object model did it right with explicit memory allocation separate from the constructor:
MyInstPtr := new(TSomeObjectType, Init(Parameters, go, here));
vs.
MyInst.Init(...);
(I hope I remembered the syntax correctly. It has been over a decade that I used this.)