• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ Referencje

+1 głos
4,208 wizyt
pytanie zadane 26 kwietnia 2015 w C i C++ przez SebekMakaron Obywatel (1,290 p.)
Co zyskujemy dzięki stosowaniu referencji?

6 odpowiedzi

+4 głosów
odpowiedź 26 kwietnia 2015 przez daan Pasjonat (17,640 p.)
wybrane 27 kwietnia 2015 przez SebekMakaron
 
Najlepsza

Referencja to spory dział :D Generalnie jest to ulepszony i bezpieczny mechanizm wskaźników z C. Przekazywanie przez referencje głównie pozwala na zaoszczędzenie czasu i pamięci. Jest kilka rodzajów przekazywania przez referencje :

void func(int& x);

Ten sposób przekazuje orginalny obiekt do funkcji, przy czym ten obiekt musi istnieć, tzn nie możemy zrobić tak func(5);

void func(const int& x);

Również przekazujemy orginalny obiekt, przy czym nie może być on modyfikowany wewnątrz funkcji. Dodatkowo możemy przesłać tymczasową zmienną, czyli np. func(5);

void func(int&& x);

Tak zwana referencja do r-wartości, pozwala na przekazanie obiektu tymczasowego (takiego bez nazwy :D), do funkcji bez niepotrzebnego kopiowania go :D W takim wypadku do funkcji możemy przekazać tylko i wyłącznie tymczasowe obiekty :) func(y); nie zadziała :P ale do tego polecam poczytać o semantyce przenoszenia C++11 :P

void func(const int&& x);

Podobnie jak wyżej, z tą różnicą że nie możemy modyfikować podawanej wartości, bez const jest to możliwe :)

+2 głosów
odpowiedź 26 kwietnia 2015 przez kovi29 Obywatel (1,200 p.)
Czas ;) ... obiekt przekazywany przez referencje do np. funkcji nie musi tworzyć swojej kopi w ciele funkcji, tylko wszystko odbywa się na oryginalnym obiekcie... metoda przydatna przy przekazywaniu dużych struktur zajmujących dużo miejsca w pamięci...
0 głosów
odpowiedź 26 kwietnia 2015 przez Ehlert Ekspert (215,010 p.)
edycja 26 kwietnia 2015 przez Ehlert

Odwołujemy się do oryginału obiektu.

int foo(int arg);

taki zapis wysyła kopię argumentu do funkcji. Int to nic, ale jeśli kopiujesz obiekt który dużo waży możesz zrobić bajzel w pamięci.

int foo(const int& arg);

ten zapis wysyła do funkcji oryginał, przy czym w ciele funkcji nie może zostać zmieniony (const)

komentarz 26 kwietnia 2015 przez Pan Kulomb Pasjonat (18,630 p.)
Jaki to język? Czyżby jakiś M$?
komentarz 26 kwietnia 2015 przez Ehlert Ekspert (215,010 p.)

To c++. Przynajmniej tak mi się wydaje. Jakieś wątpliwości? wink

komentarz 26 kwietnia 2015 przez daan Pasjonat (17,640 p.)
Chyba powinien być operator & :D a jeżeli nie będzie modyfikatora const to po prostu w ciele funkcji obiekt będzie można dowolnie modyfikować + const pozwala na wysłanie obiektu "tymczasowego", brak modyfikatora const wymusza przekazywanie istniejącego elementu do funkcji :P
komentarz 26 kwietnia 2015 przez Ehlert Ekspert (215,010 p.)

Porawiłem, za dużo PHP laugh

0 głosów
odpowiedź 26 kwietnia 2015 przez Ursan Bywalec (2,920 p.)

Oszczędzamy pamięc. Możemy kopiować głęboko...

Przekazując przez wartość np. x do funkcji f...

Funkcja f kopiuje wartosc x, dziala na jej kopi, po czym ją zwraca.

Przy referencji funkcja f działa bezpośrednio na zmiennej x przekazanej do tej funkcji

0 głosów
odpowiedź 26 kwietnia 2015 przez krecik1334 Maniak (58,390 p.)

Możemy przekazać oryginał tablicy do funkcji (nie polecam, lepszy wskaźnik laugh). Ale ogólnie pracujemy w funkcjach na oryginałach zmiennych, co się czasami jednak przydaje.

0 głosów
odpowiedź 10 maja 2015 przez Wiciorny Ekspert (281,250 p.)
Dzięki bardzo za to pytanie! :D bo też chciałem poszukać. A tak otrzymałem odpowiedzi.

Podobne pytania

0 głosów
3 odpowiedzi 1,081 wizyt
pytanie zadane 18 lipca 2018 w C i C++ przez Nowacx02 Obywatel (1,060 p.)
0 głosów
1 odpowiedź 718 wizyt
pytanie zadane 28 kwietnia 2020 w C i C++ przez Adrian Maj Nowicjusz (160 p.)
0 głosów
1 odpowiedź 384 wizyt
pytanie zadane 3 marca 2018 w C i C++ przez Sic Dyskutant (8,510 p.)

93,425 zapytań

142,421 odpowiedzi

322,647 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...