Справочные функции в C ++

У меня есть функция, которая выдает ошибку «не могу преобразовать из 'int' в 'int &'», когда я пытаюсь ее скомпилировать.

int& preinc(int& x) { 
    return x++;
}

Если я замените x ++ на x, он скомпилируется, но я не уверен, как это отличает его. Я думал, что x ++ возвращает x до того, как увеличивает x, поэтому не должно ли «return x ++» быть таким же, как «return x» в отношении того, что возвращает preinc? Если проблема в том, что оператор ++ действует на x, то почему он не генерирует никаких ошибок, если я помещаю строку «x ++» до или после оператора return или заменяю x ++ на ++ x?

5
задан john smith 9 June 2011 в 11:02
поделиться