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

C++ C#\ की सामान्य बाधाओं की नकल कैसे कर सकता है?

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

How Can C   Mimic C#\'s Generic Constraints?

C में टेम्पलेट बाधाएं: C# बाधाओं से परे

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, विशिष्ट आवश्यकताओं के साथ प्रकारों को परिभाषित करने से कोड की मजबूती बढ़ सकती है और त्रुटियों को रोका जा सकता है . C# में, सामान्य प्रकार के मापदंडों पर प्रतिबंध लगाने से यह सुनिश्चित होता है कि केवल कुछ मानदंडों को पूरा करने वाले प्रकारों को ही त्वरित किया जा सकता है।

C 11 कार्यान्वयन

C मूल रूप से टेम्पलेट बाधाओं का समर्थन नहीं करता है, लेकिन नवीनतम मानक (सी 11) ने समाधान के रूप में std::is_base_of के साथ static_assert पेश किया। यह आपको यह सत्यापित करके संकलन के दौरान बाधाओं को लागू करने की अनुमति देता है कि टेम्पलेट पैरामीटर किसी निर्दिष्ट बेस क्लास से प्राप्त होता है या नहीं।

उदाहरण:

निम्नलिखित सी 11 कोड पर विचार करें:

#include 

template
class YourClass {

    YourClass() {
        // Compile-time check
        static_assert(std::is_base_of::value, "type parameter of this class must derive from BaseClass");

        // ...
    }
};

इस उदाहरण में, YourClass टेम्पलेट को बेसक्लास बेस क्लास से प्राप्त करने के लिए इसके प्रकार पैरामीटर T की आवश्यकता होती है। यदि एक गैर-व्युत्पन्न प्रकार को पैरामीटर के रूप में उपयोग किया जाता है, तो संकलन-समय पर एक कंपाइलर त्रुटि उत्पन्न होगी, जो रनटाइम त्रुटियों को रोकेगी।

यह दृष्टिकोण सी # की सामान्य बाधाओं के समान कार्यक्षमता प्रदान करता है लेकिन सी 11 के लिए विशिष्ट है और इसकी आवश्यकता है static_assert और std::is_base_of का उपयोग।

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

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

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

Copyright© 2022 湘ICP备2022001581号-3