PDA

Просмотр полной версии : Ф-ции присваиваем значение.


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
Это был один из моих первых опытов на С++ (присвоение переменной значение) вообще никому нах не нужна эта вещь