В настоящее время я работаю над довольно старым кодом на С++ и часто нахожу такие вещи, как
int i;
i = 42;
или
Object* someObject = NULL;
someObject = new Object();
или даже
Object someObject;
someObject = getTheObject();
Я полностью понимаю, что делает этот код, но я действительно не знаю, когда такое разделение определения переменных и инициализации могло бы быть полезным. Я искал некоторые объяснения, но всегда получал списки инициализации членов или вопрос, когда вы должны определить свои локальные переменные.
В конце концов, я не понимаю причины, по которой кто-то мог умышленно написать этот код. Он просто разбивает определение и инициализацию на две последующие строки и создает накладные расходы - в последнем случае он создает объект, используя конструктор по умолчанию, только для его уничтожения в следующей строке.
Интересно, следует ли просто изменить код на
int i = 42;
Object* someObject = new Object();
Object someObject = getTheObject();
Может ли это привести к каким-либо проблемам?