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

क्या C++11 में फंक्शन अलियासिंग संभव है?

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

Is Function Aliasing Possible in C  11?

सी 11: फ़ंक्शन अलियासिंग

सी में, किसी क्लास के लिए उपनाम बनाने के लिए कीवर्ड का उपयोग किया जा सकता है। हालाँकि, फ़ंक्शंस के लिए समान कार्यक्षमता सीधे उपलब्ध नहीं है। यह आलेख इस प्रश्न का पता लगाता है कि क्या फ़ंक्शन अलियासिंग संभव है और सही अग्रेषण का उपयोग करके एक समाधान प्रदान करता है।

उद्देश्य:
यह निर्धारित करने के लिए कि क्या किसी फ़ंक्शन के लिए उपनाम बनाना संभव है सी और, यदि ऐसा है, तो इसे पूरा करने के लिए सबसे साफ तरीका ढूंढें। { शून्य एफ(); }

हम फ़ंक्शन bar::f के लिए g नामक उपनाम बनाना चाहेंगे। हालाँकि, निम्नलिखित प्रयास के परिणामस्वरूप त्रुटि हुई:
using g = bar::f; // त्रुटि: नेमस्पेस 'बार' में 'f' किसी प्रकार का नाम नहीं देता है

namespace bar
{
    void f();
}

फ़ंक्शन उपनाम बनाने के लिए, हम टेम्प्लेट और परफेक्ट फ़ॉरवर्डिंग के संयोजन का उपयोग कर सकते हैं . इसे कैसे प्राप्त किया जा सकता है इसका एक उदाहरण यहां दिया गया है:

using g = bar::f; // error: ‘f’ in namespace ‘bar’ does not name a type

यह समाधान एक सामान्य टेम्पलेट फ़ंक्शन बनाकर काम करता है जो किसी भी संख्या में तर्क लेता है। फिर यह इन तर्कों को सही अग्रेषण का उपयोग करके मूल फ़ंक्शन f पर अग्रेषित करता है। यह सुनिश्चित करता है कि कॉल किए गए फ़ंक्शन को उनके मूल रूप में तर्क प्राप्त होते हैं, भले ही किसी भी प्रकार के रूपांतरण या पॉइंटर डीरेफ़रेंस को उपनाम पर लागू किया गया हो।
नोट:

यह समाधान ओवरलोडेड फ़ंक्शंस और फ़ंक्शन टेम्पलेट्स के लिए भी काम करता है, यह सुनिश्चित करता है कि दिए गए तर्कों के आधार पर सही फ़ंक्शन कॉल किया जाता है।
विज्ञप्ति वक्तव्य यह आलेख यहां पुनर्मुद्रित है: 1729666346 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3