"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > C++ में फ़ंक्शंस के लिए तर्क पारित करते समय `std::forward` मूल संदर्भ प्रकार को संरक्षित करने में कैसे मदद करता है?

C++ में फ़ंक्शंस के लिए तर्क पारित करते समय `std::forward` मूल संदर्भ प्रकार को संरक्षित करने में कैसे मदद करता है?

2024-11-15 को प्रकाशित
ब्राउज़ करें:540

How does `std::forward` help preserve the original reference type when passing arguments to functions in C  ?

std::forward का उपयोग करना: परिशुद्धता के साथ तर्कों को अग्रेषित करना

सी में कार्यों के लिए तर्क पारित करते समय, उपयोग किए गए संदर्भ संशोधक पर विचार करना महत्वपूर्ण है फ़ंक्शन मापदंडों को परिभाषित करने के लिए। std::forward का उपयोग तर्क संदर्भों को संभालने में लचीलापन प्रदान करता है।

std::forward के लाभ

C 0x में, std::forward का उपयोग स्पष्ट रूप से किया जाता है तर्कों को किसी फ़ंक्शन में ले जाएं। यह तब फायदेमंद होता है जब फ़ंक्शन सार्वभौमिक संदर्भ (टी&&) स्वीकार करता है और आप मूल संदर्भ प्रकार को संरक्षित करना चाहते हैं, चाहे वह एक अंतराल संदर्भ हो या एक प्रतिद्वंद्विता संदर्भ हो।

&& का उपयोग करना पैरामीटर घोषणा में

का उपयोग && पैरामीटर घोषणाओं में इंगित करता है कि केवल प्रतिद्वंद्विता संदर्भों की अनुमति है। हालाँकि, इसका मतलब यह नहीं है कि यह && के साथ कार्य करता है। पैरामीटर्स को केवल अस्थायी तौर पर ही बुलाया जा सकता है। दिए गए उदाहरण में, foo को किसी भी प्रकार के तर्क के साथ बुलाया जा सकता है, जिसमें मान भी शामिल है। टेम्पलेट के भीतर किसी अन्य फ़ंक्शन में तर्क पास करते समय std::forward का उपयोग करना। यह सुनिश्चित करता है कि सही प्रकार का तर्क नेस्टेड फ़ंक्शन पर अग्रेषित किया गया है, भले ही वह अंतराल या प्रतिद्वंद्विता हो। उदाहरण के लिए:

टेम्पलेट शून्य कुछ करो(पैराम्स...आर्ग्स) { doSomethingElse(args...); }

यह इच्छानुसार काम नहीं करेगा क्योंकि doSomethingElse में && पैरामीटर. इसके बजाय, निम्नलिखित कोड का उपयोग किया जाना चाहिए:

template
void doSomething(Params... args) {
  doSomethingElse(args...);
}

तर्कों को एकाधिक बार अग्रेषित करना

template
void doSomething(Params&&... args) {
  doSomethingElse(std::forward(args)...);
}

template void doSomething(Params&&... args) { doSomethingElse(std::forward(args)...); doSomethingWeird(std::forward(args)...); }

निष्कर्ष रूप में, std::forward C में सटीक तर्क अग्रेषण सुनिश्चित करने में महत्वपूर्ण भूमिका निभाता है। यह इच्छित संदर्भ प्रकार को बनाए रखने में मदद करता है और विभिन्न संदर्भ क्वालिफायर वाले कार्यों के बीच निर्बाध अंतरसंचालन को सक्षम बनाता है, विशेष रूप से टेम्पलेट संदर्भों में।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3