Есть код:
int x;
int& setx();
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
setx() = 92;
cout << "x =" << x << endl;
system("pause");
return 0;
}
int& setx() {
return x; // возвращает значение, которое будет изменено
}
Почему без знака амперсанда он не пашет? Типо, только тип возвращаемоо значения(т.е. ссылка) может поменять переменную?
Если убрать "знак &", т.е. ссылку, то возвращаемое значение ...
... никак не будет связано с оригинальной переменной x. Даже если вы как-то его поменяете, то на переменную x это никакого влияния не окажет.
(Невозможно поменять возвращаемое значение типа int, но это может быть возможно для других возвращаемых типов, например std::string)
... не будет являться lvalue, т.е. присваивать ему чего-либо при помощи встроенного оператора присваивания будет нельзя.
Что вы имеете в виду под "не пашет" из вашего вопроса не ясно.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей