C ++ में संदर्भ द्वारा कॉल को कैसे लागू करें



यह आलेख आपको C ++ में संदर्भ द्वारा कार्यान्वयन के साथ कॉल का एक संक्षिप्त ज्ञान प्रदान करेगा और यह कॉल बाय वैल्यू से कैसे भिन्न होगा।

यदि आपके पास पहले से C में पृष्ठभूमि है, तो C ++ के साथ काम करना मुश्किल काम नहीं है क्योंकि दोनों एक-दूसरे के साथ कई तरह के कॉन्सेप्ट साझा करते हैं। लेकिन, C ++ की कुछ अवधारणाएँ हैं जो C प्रतिमान का हिस्सा नहीं हैं। C ++ लेख में संदर्भ द्वारा इस कॉल में, हम एक ऐसी अवधारणा के बारे में बात करेंगे, जो निम्नलिखित क्रम में संदर्भ चर और इसके अनुप्रयोग हैं:

संदर्भ चर

C ++ हमें एक नया प्रकार का वैरिएबल देता है यानी रेफरेंस वैरिएबल। हम अपने मूल चर के उपनाम के रूप में एक संदर्भ चर के बारे में सोच सकते हैं। यह एक पंक्ति में एक संदर्भ चर की सटीक कार्यक्षमता है।





उदाहरण के लिए, यदि आपका नाम हैरिसन है, लेकिन घर पर, आपके परिवार के सदस्य आपको हैरी कहते हैं। अब संदर्भ संदर्भ के कुछ विवरणों पर ध्यान दें। इस प्रकार के वैरिएबल की घोषणा और उपयोग सामान्य चर से भिन्न होते हैं जिनका हम उपयोग करते हैं लेकिन सूचक चर के समान।

वाक्य - विन्यास:



int Hello = 1 int * ptr int & World = हैलो

जब हम एक वैरिएबल ’हैलो’ युक्त मान, 1 ’बनाते हैं, तो मेमोरी के एक सेगमेंट का उपयोग मूल्य‘ 1 के लिए किया जाता है, इस सेगमेंट का नाम ’Hello’ होगा और इस सेगमेंट का पता उदाहरण के लिए कुछ हेक्स मान होगा0x64। जब हम लिखते हैंint& संसार = नमस्कार'वर्ल्ड' वेरिएबल बनाया गया है जो उसी मेमोरी लोकेशन की ओर इशारा करता है।

जावा में ओवरलोडिंग और ओवरराइडिंग के बीच अंतर

लाइन सहित वर्ल्ड + ++ पता 0x64 में परिवर्तन करेगा इसका मतलब चर 'हैलो' का मूल्य भी बदल जाएगा। कुछ लोग इशारा कर सकते हैं कि कैसे हैं संदर्भ चर सूचक चर से अलग है जिसकी चर्चा हम इस पोस्ट के उत्तरार्द्ध में करेंगे।

C ++ में Value द्वारा कॉल और संदर्भ द्वारा कॉल

मूल्य से कॉल करें: वैल्यू बाय कॉल एक व्यापक रूप से इस्तेमाल की जाने वाली विधि है। अधिकांश बार आप कॉल वैल्यू एप्रोच का उपयोग कर रहे होंगे क्योंकि आप नहीं चाहते हैं कि चर के अपने मूल मूल्यों को बदला जाए। इसलिए हमने किसी फ़ंक्शन को कॉल करने के लिए कॉल द्वारा वैल्यू मेथड का उपयोग किया है, केवल चर के मान पारित किए गए हैं। यह मेमोरी में डमी वेरिएबल बनाकर हासिल किया जाता है।



# नाम को जोड़ने के लिए std void add (int a, int b) {a = a + 10 b = b = 10 टाउट का उपयोग करें<<'Value of a = '<  C ++ में वैल्यू बाय कॉल

उपरोक्त छवि से, हम देख सकते हैं कि जैसे ही हम ऐड को कॉल करते हैं () x और y वेरिएबल्स के मानों को a और b के वेरिएबल्स पर कॉपी किया जाता है। ए और बी डमी चर हैं।

संदर्भ द्वारा कॉल करें: अब, संदर्भ विधि द्वारा कॉल के बारे में बात करते हैं। इस पद्धति में अलग-अलग डमी वैरिएबल नहीं बनाए जाते हैं, पहले से मौजूद वैरिएबल का एक संदर्भ विधि को दिया जाता है। यह संदर्भ एक ही मेमोरी लोकेशन की ओर इशारा करता है इसलिए मेमोरी में अलग-अलग कॉपी नहीं बनाई जाती हैं। यहां ध्यान देने योग्य महत्वपूर्ण बात यह है कि संदर्भ चर में किए गए परिवर्तन डमी चर में परिलक्षित होते हैं।

# नाम को जोड़ने के लिए 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 &’ के बाद से उपरोक्त फ़ंक्शन सामान्य कार्यों की तुलना में अलग दिखता है। यह फ़ंक्शन स्थिति के आधार पर एक या बी का संदर्भ देता है। यहां ध्यान देने योग्य महत्वपूर्ण बात यह है कि मूल्यनहीं लौटे हैं।

यदि हम फ़ंक्शन मिन (x, y) कहते हैं, तो 10. x 10 को निर्दिष्ट किया जाएगा यदि यह न्यूनतम है या यदि y न्यूनतम है तो y को दिया जाएगा।

संदर्भ बनाम सूचक द्वारा कॉल करें

हमारे सभी उदाहरणों में हमने देखा कि हमने हमेशा संदर्भ चर के लिए एक मान दिया है जो संदर्भ चर के बाद से NULL नहीं हो सकता है जबकि सूचक चर NULL हो सकते हैं और अप्रत्याशित त्रुटियां पैदा कर सकते हैं।

देवों में क्या है

संदर्भ चर को पुन: असाइन नहीं किया जा सकता है, जबकि सूचक चर कार्यक्रम में बाद में किसी अन्य चर पर इंगित कर सकते हैं।

एक पॉइंटर वैरिएबल किसी विशेष वैरिएबल का पता मूल्य रखता है जबकि संदर्भ चर का पता वैसा ही होता है जैसा कि उस चर का होता है।

इसके साथ, हम C ++ लेख में इस कॉल बाय संदर्भ के अंत में आते हैं। मुझे आशा है कि आपको मूल्य और संदर्भ द्वारा कॉल के विभिन्न कार्यान्वयन की समझ मिल गई है और वे दोनों कैसे भिन्न हैं।

आप और अधिक जानने के लिए चाहते हैं, तो बाहर की जाँच करें Edureka, एक विश्वसनीय ऑनलाइन शिक्षण कंपनी है। एडुर्का के जावा जे 2 ईई और एसओए प्रशिक्षण और प्रमाणन पाठ्यक्रम आपको हाइबरनेट और स्प्रिंग जैसे विभिन्न जावा फ्रेमवर्क के साथ कोर और उन्नत जावा अवधारणाओं दोनों के लिए प्रशिक्षित करने के लिए डिज़ाइन किया गया है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इस ब्लॉग के टिप्पणी अनुभाग में इसका उल्लेख करें और हम जल्द से जल्द आपके पास वापस आ जाएंगे।