2010-10-27 6 views
6

इस पैटर्न का उद्देश्य क्या है? इसे क्या कहते है? जब मैंने पहली बार देखा तो यह बहुत अजीब लग रहा था, हालांकि मैंने इसे कई बार देखा है।व्युत्पन्न कक्षा का उपयोग टेम्पलेट पैरामीटर के रूप में क्या है?

template<typename Derived> 
struct Base { 
    //... 
}; 

struct Example : Base<Example> { 
    //... 
}; 

उत्तर

4

मुझे लगता है कि आप CRTP पर रेफर कर रहे हैं। here

+0

@ थॉमसन टैन: स्थैतिक बहुरूपता के बारे में @ जीएमएन के बिंदु के बारे में ध्यान से ध्यान दें। यह एक महत्वपूर्ण बात है। यह आभासी कार्यों के ऊपरी हिस्से के बिना बेस क्लास से वर्चुअल फ़ंक्शन कॉल को अनुकरण करने के लिए प्रदान करता है (यदि यह महत्वपूर्ण है) – Chubsdad

7

इसे Curiously Recurring Template पैटर्न कहा जाता है, और स्थिर polymorphism के लिए अनुमति देता है।

यह उपयोगी है जब आप किसी विशिष्ट वर्ग में कार्यक्षमता जोड़ना चाहते हैं, लेकिन उपयोगिता को सामान्य मामले में उपयोग करने योग्य बनाना चाहते हैं। उपयोगिता पर निर्भर करते हुए और टेम्पलेट पैरामीटर का उपयोग करके, आप दोनों को प्राप्त कर सकते हैं।

संबंधित मुद्दे