Za pomocą przykładów zrozumiemy podejście C ++ przez podejście odniesienia i sposób dostarczenia wskazówek jako argumentów do funkcji w tym artykule. Parametry przekazywane do funkcji jako wskaźniki są takie same jak każda inna wartość podczas przekazywania wartości przez odniesienie. W rezultacie musisz podać typy wskaźników dla argumentów funkcji, jak w funkcji Swap (), która zamienia wartości różnych zmiennych liczb całkowitych rozwiązywanych przez ich argumenty.
Przykład 1: Program przejścia przez odniesienie bez wskazówek w C++
Tutaj przekazujemy wartość przez odniesienie bez korzystania z deklaracji wskaźnika. Poniżej znajduje się program ilustracyjny przekazywania zmiennej przez odniesienie.
Początkowo zamieściliśmy pliki nagłówka do implementacji programu w sekcji nagłówka. W następnym kroku mamy definicję funkcji do wymiany wartości. Funkcja otrzymuje wymianę nazwy, a funkcja przyjmuje dwa odniesienia zmienne ciągów jako parametr. Zmienne strunowe, które zastosuje funkcja swapu, są zdefiniowane jako „str1” i „str2”.
Następnie w funkcji stworzyliśmy zmienną „Temp”, którą przekazaliśmy zmienną „STR1”. Następnie „STR2” jest przypisany do „STR1”, a następnie „STR2” ma „STR2”. W ten sposób algorytm zamiany jest stosowany do ciągu odniesienia.
Mamy naszą główną funkcję, w której dwa ciągi są deklarowane jako „str_a” i „str_b” i inicjowane z niektórymi wartościami ciągów. Wartości ciągu zostaną wydrukowane przed zastosowaniem funkcji swap. Następnie wywołaliśmy funkcję swap w funkcji głównej i przekazaliśmy ciąg zdefiniowany w funkcji głównej. Następnie zamieniony sznurek zostanie wydrukowany.
#włączaćWynik pokazuje ciąg przed zamianą i po zamianę przez ciąg odniesienia przekazany w funkcji.
Przykład 2: Program przekazania przez odniesienie z wskaźnikami w C++
Jak w poprzednim przykładzie, widzieliśmy przechodzący ciąg tylko przez odniesienie. Dlatego w tym przykładzie użyjemy wskaźników przez odniesienie w C ++.
Program zaczyna się od utworzenia funkcji reprezentowanej o nazwie „SwapString” i przekazuje sznurki dwupunktowe jako argument. Następnie nazwaliśmy główną funkcję programu. W głównej funkcji oba sznurki nazywane są odpowiednio „STR1” i „STR2”. Te zmienne ciągów są inicjowane ciągami słów.
Następnie nazwieliśmy funkcję „swapString”, do której przekazywane są adresy „str1” i „Str2”. Ciągi zostaną zamienione w tej definicji funkcji w głównej funkcji i wydrukowane. Następnie nazwali funkcję „swapString” poza główną funkcją zamiany określonych ciągów.
#włączaćStąd wyniki przechodzących odniesień do strun z wskaźnikami pokazano przy następującej grafice.
Przykład 3: Program przechodzącego obiektu ciągów przez odniesienie w C++
Nawet jeśli funkcja nie może modyfikować źródłowego obiektu ciągów w programie wywołującym, przekazywanie obiektów ciągów C ++ za pomocą odniesienia jest dość powszechne. Obiekty są zwykle dość duże, a zatem mogą być kosztowne w porównaniu z ilością przechowywania, którego używają i czas niezbędny do skonstruowania ich klonu podczas przekazywania ich według wartości. Ogólnie rzecz biorąc, przekazywanie obiektów przez odniesienie zapisuje zarówno pamięć, jak i czas.
Jedyną wadą przekazania obiektu przez odniesienie jest to, że może on zmienić obiekt źródłowy przekazany do funkcji. To nie jest pożądane. Jeśli nie chcemy aktualizować obiektu w funkcji, wolimy utrudnić.
Mamy definicję funkcji w następującym programie jako „InputString”, do którego przekazaliśmy odniesienie ciągów. Następnie zadeklarowaliśmy obiekt ciągów „MyStr” w głównej funkcji, a ciąg obiektu „MySTR” zawiera ciąg słowa.
Następnie nazwaliśmy „wejście” i przekazaliśmy w nim ten obiekt łańcuchowy. Mamy definicję funkcji „InputString” poza główną funkcją, która tworzy nowe odniesienie obiektu String z „MySt”. Nowy ciąg jest zdefiniowany jako „Newstr”, a następnie inicjowany w ciele funkcji. Zmodyfikowaliśmy ciąg obiektu „Newstr” i wydrukowaliśmy nowy obiekt String.
#włączaćGrafika poniżej reprezentuje wynikowe wartości ciągów ciągu źródłowego i zmienionego ciągu.
Przykład 4: Program przekazywania stałego obiektu ciągów przez odniesienie w C++
Kompilator rzuci usterkę, jeśli odniesienie zostanie przekazane do stałego obiektu. Możemy rozwiązać ten problem, używając stałego odniesienia zmiennej. Zapobiega to zmianie punktów odniesienia, na które punkty odniesienia.
Najpierw mamy definicję funkcji „Wyświetlacz”, w którym przekazywane jest stałe odniesienie do ciągu. Stałe ciągi są zdefiniowane i inicjowane w głównej funkcji jako „STR1” i „STR2”. Następnie przekaż te stałe ciągami do funkcji „Wprowadzenie”. Wywołał funkcję poza główną funkcją, w której zadeklarowaliśmy stałą zmienną ciągów „MyStr”.
#włączaćObiekt niezakłócony jest przekazywany do funkcji poprzez stałe odniesienie do obiektu. Więc nie otrzymujemy żadnych błędów kompilacji w kodzie.
Wniosek
Odniesienia umożliwiają funkcję wpływanie na wartość argumentu, co może być korzystne w niektórych sytuacjach. Natomiast odniesienia do stawki upewnij się, że funkcja nie zmienia argumentu. W ten sposób podsumowaliśmy ten artykuł tutaj z przykładową demonstracją w C ++ i mamy nadzieję, że może to być pomocne.