Ostatnio gdy byłem tłumacząc podstawową różnicę między wskaźniki i referencje (w kontekście C++ programowanie) z kimś, powiedziałem zwykłych wyjaśnień, które mówią o różnych konwencjach mijających argumentem funkcji - wywołanie przez wartość, Wywołanie przez wskaźnik, Wywołanie przez odniesienie i wszystkie powiązane teorie dotyczące odniesień.C++ referencyjne i const wskaźniki w C/C++
Ale wtedy pomyślałem, że niezależnie od tego, co robi odniesienie C + pod względem przekazywania argumentów, (pozwala na efektywne wykorzystanie pamięci przez duże struktury/obiekty, w tym samym czasie zachowuje bezpieczeństwo, nie pozwalając użytkownikowi zmodyfikować żadnych zmiennych obiektu przekazywane jako odniesienie, jeśli nasz projekt tego wymaga)
const wskaźnik w C będzie osiągnąć to samo, na przykład Jeśli trzeba przekazać wskaźnik struktury powiedzieć struct mystr * ptr, oddając wskaźnik struktury jako stałej -
func(int,int,(const struct mystr*)(ptr));
nie PTR być jakiś odpowiednik odniesienia?
Będzie ona działać w sposób, który byłby pamięć wydajny przez nie replikowania struktury (przesuń przez wskaźnik), ale również bezpieczne przez zabronienie jakichkolwiek zmian w dziedzinie konstrukcji ze względu na fakt, że jest ona przekazywana jako wskaźnik const.
w C++ kontekście obiektu, możemy przekazać obiekt const wskaźnik zamiast odniesienia do obiektu, jak osiągnąć tę samą funkcjonalność)
Jeśli tak, to scenariusz co use-case w C++, potrzebuje referencji. Jakiekolwiek szczególne korzyści z odniesienia, oraz związane z nimi niedogodności?
dziękuję.
-AD
@elusive: W jaki sposób wskaźniki są mniej "bezpieczne dla typu" niż odniesienia? – fredoverflow