В настоящее время я работаю над довольно старым кодом 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();
Может ли это привести к каким-либо проблемам?