Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Ф-ции присваиваем значение. (https://forum.antichat.xyz/showthread.php?t=81372)

xGOR 18.08.2008 14:25

Ф-ции присваиваем значение.
 
Привет всем. Вот недавно вкуривал новое СадоМазо в С++. Вкурил то, что ф-ции присвоил значение. Перейду сразу к сорцу =)

Код:

#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;
}

Смысл здесь такой: если ф-ция возвращает значения ввиде ссылки, то компилятор интерпритирует её как переменную.

Если ктото ещё подобные вещи знает, отписывайте ;)

ronald 21.08.2008 14:08

как, я понял, а я всегда плохо понимаю, ты хочеш, чтобы функция вернула тебе значение x? Ты хочешь, чтобы значение x изменялось, функцией на значение f? Тогда всё правильно.

ronald 21.08.2008 14:18

:) Тэк-с, мне не давал покоя ммой корявый пост, разъясняю подробно:
func() возвращает значение x,
следовательно func=x,
ты передаешь функции значение f(было бы правильнее) func(x), на мой взгляд,
тогда функция изменяет значение x на значение f и выдаёт. Исправьте меня если ошибся, я ещё малёк в с++ :)
P.S:если помог, то плюсы в студию))

ronald 21.08.2008 14:20

& убери)))

Mystic.asm 21.08.2008 16:21

Нет, здесь просто используется ссылка на int&. Ничего особенного в этом коде я не вижу, в стандартных классах это сплошь и рядом (std::vector<T>::at(size_t), std::vector<T>::operator[](size_t)).
Просто чтобы понять это, можно интерпретировать ссылку как саморазыменовывающийся указатель, никакого садомазо, все очевидно.

ronald 21.08.2008 16:40

ок, недопонел. Eee7-смерть клавиатуры и монитора, сидеть максимум десять минут и идти блевать)))))

4p3 21.08.2008 16:45

Простое жонглирование именем переменной и адресом. На практике может быть источником весьма неприятных ошибок.

return *this в С++ очень близок по функциональности, когда используется в &operator = или же &operator +

По сути автор и реализовал тот самый operator=(int f) только в извращенном виде.

[Y.P.C.]yla 21.08.2008 17:35

аффтор ты гониш!
че ж тут знать о присвоении
нафиг такую ерунду писать?О_о
это в каждом учебнике имеется в первых главах ))
жжошь))

ronald 22.08.2008 12:12

Это был один из моих первых опытов на С++ (присвоение переменной значение) вообще никому нах не нужна эта вещь


Время: 00:31