Привет всем. Вот недавно вкуривал новое СадоМазо в С++. Вкурил то, что ф-ции присвоил значение. Перейду сразу к сорцу =) Code: #include <iostream> using namespace std; int x; int& func(){ return x; } void main(){ int f=5; x=4; cout<<"x="<<x<<"\nfunc()="<<func(); func()=f; cout<<"\n\nx="<<x<<"\nfunc()="<<func()<<endl; } Смысл здесь такой: если ф-ция возвращает значения ввиде ссылки, то компилятор интерпритирует её как переменную. Если ктото ещё подобные вещи знает, отписывайте
как, я понял, а я всегда плохо понимаю, ты хочеш, чтобы функция вернула тебе значение x? Ты хочешь, чтобы значение x изменялось, функцией на значение f? Тогда всё правильно.
Тэк-с, мне не давал покоя ммой корявый пост, разъясняю подробно: func() возвращает значение x, следовательно func=x, ты передаешь функции значение f(было бы правильнее) func(x), на мой взгляд, тогда функция изменяет значение x на значение f и выдаёт. Исправьте меня если ошибся, я ещё малёк в с++ P.S:если помог, то плюсы в студию))
Нет, здесь просто используется ссылка на int&. Ничего особенного в этом коде я не вижу, в стандартных классах это сплошь и рядом (std::vector<T>::at(size_t), std::vector<T>:perator[](size_t)). Просто чтобы понять это, можно интерпретировать ссылку как саморазыменовывающийся указатель, никакого садомазо, все очевидно.
Простое жонглирование именем переменной и адресом. На практике может быть источником весьма неприятных ошибок. return *this в С++ очень близок по функциональности, когда используется в &operator = или же &operator + По сути автор и реализовал тот самый operator=(int f) только в извращенном виде.
Это был один из моих первых опытов на С++ (присвоение переменной значение) вообще никому нах не нужна эта вещь