Wpis z mikrobloga

#programowanie #cpp
Czołem programiści 15k ( ͡° ͜ʖ ͡°)
Czy jest ktoś w stanie wyjaśnić mi, jak działa np. taka konstrukcja:
_void f(typ *&p, int n) {_
Innymi słowy, jak działa wskaźnik na referencję na zmienną, do czego można by to wykorzystać
i czemu po prostu nie typ wskaźnikowy? Znalazłem to gdzieś na stronie o strukturach danych i nie wiem czym to się wyróżnia, że w metodzie, w której coś jest usuwane używają dodatkowo referencji, a w metodach, które np. tylko coś wypisują używają samej deklaracji wskaźnikowej bez ref. Jakby ktoś mógł na to zerknąć i mi to wyjaśnić byłbym suuper wdzięczny!
  • 9
@j4ace: Różnica jest prosta - jeśli napiszesz tylko typ *p to w f dostaniesz lokalną kopię wskaźnika, co w zupełności wystarcza do dostania się do tego na co on wskazuje. Ale czasem musisz zmodyfikować, powiedzmy, że masz jakiś T* ptr wskazujący na null, wywołujesz funkcję void loadObject(T* &ptr), w tej funkcji tworzysz sobie jakiśtam obiekt t typu T i na koniec robisz ptr = &t. To jest horror programistyczny w
@j4ace:

jak działa wskaźnik na referencję na zmienną

Niema czegoś takiego, nie będzie. Referencja to tylko syntactic sugar na wskaźnik i pozwala kompilatorowi bardziej uważać na typ odcinając się od języka C.

&*p

To jest błąd składniowy.
Istnieje coś takiego jeszcze jak rvalue reference i wygląda jak referencja do referencji, ale nią nie jest:

int &&n

W skrócie służy to do przenoszenia wartości z jednego miejsca do drugiego ( destruktywnie ).