यह Non-Virtual Interface Idiom (एनवीआई) है। हर्ब सटर द्वारा उस पृष्ठ के बारे में काफी जानकारी है। हालांकि, सी ++ एफएक्यू लाइट क्या कहते हैं, here और here के साथ आप जो पढ़ते हैं उसे गुस्सा करें।
एनवीआई का प्राथमिक लाभ कार्यान्वयन से इंटरफेस को अलग कर रहा है। एक बेस क्लास एक सामान्य एल्गोरिदम लागू कर सकती है और इसे दुनिया में पेश कर सकती है जबकि इसके उप-वर्ग वर्चुअल फ़ंक्शंस के माध्यम से एल्गोरिदम के विवरण को कार्यान्वित कर सकते हैं। बाहरी उपयोगकर्ताओं को एल्गोरिदम विवरण में परिवर्तनों से बचाया जाता है, खासकर यदि आप बाद में निर्णय लेते हैं कि आप प्री-एंड पोस्ट प्रोसेसिंग कोड जोड़ना चाहते हैं।
स्पष्ट नुकसान यह है कि आपको अतिरिक्त कोड लिखना है। इसके अलावा, private
वर्चुअल फ़ंक्शंस बहुत से लोगों को भ्रमित कर रहे हैं। कई कोडर गलती से सोचते हैं कि आप उन्हें ओवरराइड नहीं कर सकते हैं। हर्ब सटर private
वर्चुअल की तरह प्रतीत होता है, लेकिन आईएमएचओ सी ++ एफएक्यू लाइट की सिफारिश का पालन करने के लिए अभ्यास में अधिक प्रभावी है और उन्हें protected
बनाते हैं।
स्रोत
2009-03-19 18:02:54