Есть код:
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, т.е. присваивать ему чего-либо при помощи встроенного оператора присваивания будет нельзя.
Что вы имеете в виду под "не пашет" из вашего вопроса не ясно.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть у меня проект интерпретатора Basic, написанный на С++Проект довольно давний, ему уже лет 20
В общем, проблема в следующемЕсть задание написать простое приложение на чистом WinAPI