Этот код:
object *myObject;
myObject = new object(constr, params);
... законно и правильно. Но, пожалуйста, , пожалуйста, инициализируйте myObject, когда вы его выделяете. Помните, что «myObject» сам по себе не является экземпляром «объекта», но является экземпляром указателя на «объект». Поэтому, когда вы объявляете этот указатель так:
object *myObject;
... вы оставляете это неинициализированным. Вместо этого сделайте это:
object *myObject = 0;
myObject = new object(constr, params);
... а при удалении:
delete myObject;
myObject = 0;
Люди могут спорить, что вы должны установить для него значение NULL, а не 0, но с языком все в порядке, и это в основном вопрос стиля и того, к чему привыкли ваши коллеги.