В настоящее время я работаю над довольно старым кодом 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)
Я не совсем уверен, что происходит, так как это сработало на прошлой неделе, а я только начинаю изучать Пролог.