Однако, если бы он когда-либо хотел убрать объявление из функции, было бы меньше редактирования, если объявление и инициализация разделены.

тоящее время я работаю над довольно старым кодом C ++ и часто нахожу такие вещи, как

int i;
i = 42;

или же

Object* someObject = NULL;
someObject = new Object();

или даже

Object someObject;
someObject = getTheObject();

Я полностью понимаю, что делает этот код, но я действительно понятия не имею, когда такое разделение определения и инициализации переменной может быть полезным. Я искал некоторые объяснения, но всегда заканчивал списками инициализации членов или вопросом, когда вы должны определить свои локальные переменные.

В конце концов, я не понимаю причину, по которой кто-то мог специально написать этот код. Он просто разделяет определение и инициализацию на две последующие строки и создает накладные расходы - в последнем случае он создает объект, используя конструктор по умолчанию, только для его уничтожения в следующей строке.

Интересно, должен ли я просто изменить код на

int i = 42;
Object* someObject = new Object();
Object someObject = getTheObject();

Может ли это привести к каким-либо проблемам?