Первый тип:
Object* o = new Object();
Создает новый объект в куче и присваивает адрес o.Это только вызывает конструктор по умолчанию.По завершении вам придется вручную освободить память, связанную с объектом.
Второй тип:
Object o = Object();
Создает объект в стеке с использованием конструктора по умолчанию, а затем вызывает назначениеконструктор на о.Большинство компиляторов исключают вызов присваивания, но если у вас есть (предполагаемые или иные) побочные эффекты в операции присваивания, вы должны принять это во внимание.Обычный способ добиться создания нового объекта без вызова операции присваивания:
Object o; // Calls default constructor