Зачем разделять определение и инициализацию переменных в C ++?

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

int i;
i = 42;

,

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

или даже

Object someObject;
someObject = getTheObject();

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

В конце концов, я не понимаю причину, по которой кто-то мог намеренно написать этот код. Он просто разделяет определение и инициализацию на две последующие строки и создает накладные расходы - в последнем случае он создает объект, используя конструктор по умолчанию, только для его уничтожения в следующей строке. ОШИБКА: верхний уровень: неопределенная процедура: (: -) / 2 (DWIM не удалось исправить) Я не совсем уверен ...

Я использую SWI-Prolog в Windows и получаю следующую ошибку:

14 ?- parent(X, Y) :- child(Y, X).
ERROR: toplevel: Undefined procedure: (:-)/2 (DWIM could not correct)

Я не совсем уверен, что происходит, так как это сработало на прошлой неделе, а я только начинаю изучать Пролог.

13
задан false 3 February 2014 в 14:00
поделиться