Logika przeciazania operatorow
Ostatnio zmodyfikowano 2012-10-05 21:29
diego997 Temat założony przez niniejszego użytkownika |
» 2012-10-05 21:02:58 dziwne jest troche zwracanie referencji np w takim przypadku: int & funkcja( int k ) { return k; }
int main() { int * a = new int; a = funkcja( a ); a = & funkcja( a ); }
|
|
DejaVu |
» 2012-10-05 21:10:08 To nie jest dziwne. Zauważ, że Twoja zmienna w funkcji, która jest argumentem jest zmienną TYMCZASOWĄ, więc zwracasz referencję na coś co przestaje istnieć. Nie znam przypadku w którym zwrócenie adresu zmiennej by się nie powiodło - co innego przypisywanie wartości do czegoś co już nie istnieje.
/edit: Poza tym nie można przypisywać wartości do zmiennej zadeklarowanej jako wskaźnik na wartość.
PS. Nie zbaczajmy z tematu, bowiem ta dyskusja nie dotyczy już operatorów. |
|
cyklopek11 |
» 2012-10-05 21:15:20 a = funkcja( a );
a = & funkcja( a );
Tak prawidłowo jakbyś chciał zwrócić referencję do czegoś rozsądnego to mógłbyś zrobić tak/: int & funkcja( int & k ) { return k; }
Diego997, Mrovqa sorki za wczorajszy "STATIC", palnąłem jak łysy grzywką o parapet :-) |
|
|
DejaVu |
» 2012-10-05 21:20:47 Czyli int & funkcja( int & k ) { k += 123; return k; } Wówczas będziesz mógł napisać: int a = 0; printf( "a = %d\n", a ); printf( "wynik funkcji = %d\n", funkcja( a ) ); printf( "a = %d\n", a );
|
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-10-05 21:29:36 ok dzieki czyli sens zwracania referencji jest tylko wtedy kiedy pobieramy tez referencje. Mam nadzieje ze to rozumie, dzieki za wytlumaczenie i sory za zboczenie z tematu. |
|
1 « 2 » |