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