Как да приложим повикване чрез препратка в C ++



Тази статия ще ви предостави детайлно познание за Call by Reference в C ++ с реализации и как се различава от Call by Value.

Работата с C ++ не е трудна задача, ако вече имате опит в C, тъй като и двамата споделят множество концепции помежду си. Но C ++ има някои концепции, които не са част от C парадигмата. В тази покана чрез препратка в статия на C ++ ще говорим за една такава концепция, която е референтни променливи и нейните приложения в следния ред:

Референтни променливи

C ++ ни дава нов тип променлива, т.е. референтна променлива. Можем да мислим за референтна променлива като прякор за нашата оригинална променлива. Това е, което е точната функционалност на референтна променлива в един ред.





Например, ако се казвате Харисън, но у дома, членовете на вашето семейство ви наричат ​​Хари. Сега да разгледаме някои подробности за референтните променливи. Декларирането и използването на този тип променливи са различни от обичайните променливи, които използваме, но много приличат на променливите на указателя.

Синтаксис:



начало с визуално студио
int Hello = 1 int * ptr int & World = Hello

Когато създаваме променлива „Здравей“, съдържаща стойност „1“, сегмент от паметта се използва за възпаление на стойността „1“, името на този сегмент ще бъде „Здравей“ и адресът на този сегмент ще бъде някаква шестнадесетична стойност, например0x64. когато пишеминт& World = ЗдравейтеСъздава се променлива ‘World’, която сочи към същото място в паметта.

Включвайки реда World ++ ще направи промени в адрес 0x64, това означава, че стойността на променливата ‘Hello’ също ще се промени. Някои може да посочат, че как са референтни променливи, различни от променливите на указателя, които ще обсъждаме в последната част на тази публикация.

Обаждане по стойност и обаждане по референция в C ++

Обаждане по стойност: Call by Value е широко използван метод. Повечето пъти ще използвате подхода на повикване по стойност, тъй като не искате първоначалните стойности на променливите да бъдат променени. Следователно използвахме метода call by value за извикване на функция, само стойностите на променливите се предават. Това се постига чрез създаване на фиктивни променливи в паметта.



#include използвайки пространство от имена std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<  Обаждане по стойност в C ++

От горното изображение можем да видим, че веднага щом извикаме функцията add (), стойностите на променливите x и y се копират в променливи a и b. A и b са фиктивни променливи.

Обаждане по справка: Сега, нека поговорим за обаждането чрез референтен метод. В този метод не се създават отделни фиктивни променливи, към метода се предава препратка към вече съществуваща променлива. Тази справка сочи към едно и също място в паметта, поради което отделни копия не се правят в паметта. Важното, което трябва да се отбележи тук, е, че промените, направени в референтните променливи, са отразени в фиктивната променлива.

#include използвайки пространство от имена std void add (int & a, int & b) {a = a + 10 b = b + 10 cout<<'Value of a = '< int & min (int & a, int & b) {if (a 

Както виждаме, че горната функция изглежда различно в сравнение с нормалните функции, тъй като типът на връщане е ‘int &’. Тази функция връща препратка към a или b в зависимост от състоянието. Важният момент, който трябва да се отбележи, е, че стойноститене се връщат.

Ако извикаме функцията min (x, y) = 10. 10 ще бъде присвоено на x, ако е минимално, или на y, ако y е минимално.

Обаждане чрез указател срещу справка Vs

Във всички наши примери, които видяхме, винаги присвояваме стойност на референтната променлива, която създадохме, тъй като референтните променливи не могат да бъдат NULL, докато променливите на указателя могат да бъдат NULL и могат да причинят неочаквани грешки.

Референтните променливи не могат да бъдат преназначавани, докато променливите на указателя могат да сочат към друга променлива по-късно в програмата.

Променливата на указателя съдържа адресната стойност на определена променлива, докато адресът на референтната променлива е същият като този на променливата, към която се отнася.

С това стигнахме до края на това обаждане чрез препратка в статията на C ++. Надявам се, че сте разбрали различното изпълнение на обаждането чрез Value и reference и как и двете се различават.

Ако искате да научите повече, разгледайте от Edureka, доверена компания за онлайн обучение. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен да ви обучи както за основните, така и за разширените Java концепции, заедно с различни Java рамки като Hibernate & Spring.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.