Hmm, the first answer that came to mind was: two new statements, without a try-catch around the second that deletes the first. There are probably many answers to such a vague question; it is indeed unintuitive to programmers coming from e.g. C#, that virtual function calls in the constructor wouldn't call overrides (that's called dynamic binding, C++ doesn't have it), but it is almost as unintuitive that your destructor which tries to delete both objects would not be called at all, if the constructor throws an exception.