विकिपीडिया बोली:: यहाँ एक विकी पेज कि विस्तार से यह बताता है और एक छोटी उदाहराणदर्शक उदाहरण है है
ओवरराइड विशेष पहचानकर्ता मतलब यह है कि संकलक आधार वर्ग की जाँच करेगा (ते) यह देखने के लिए कि क्या इस सटीक हस्ताक्षर के साथ वर्चुअल फ़ंक्शन है या नहीं। और यदि नहीं है, तो संकलक त्रुटि देगा।
http://en.wikipedia.org/wiki/C%2B%2B11#Explicit_overrides_and_final
संपादित करें (एक सा जवाब में सुधार करने के लिए प्रयास):
के रूप में "ओवरराइड" एक विधि की घोषणा कि है कि विधि करना है पर एक (आभासी) विधि को फिर से लिखने का मतलब आधार वर्ग ओवरराइडिंग विधि में समान हस्ताक्षर होना चाहिए (कम से कम इनपुट पैरामीटर के लिए) जिस विधि को फिर से लिखना है।
यह आवश्यक क्यों है? खैर, निम्नलिखित दो सामान्य त्रुटि मामलों को रोका गया है:
नई विधि में एक प्रकार का एक प्रकार टाइप करता है। संकलक, अनजान है कि यह पिछली विधि लिखने का इरादा रखता है, बस इसे कक्षा में एक नई विधि के रूप में जोड़ता है। समस्या यह है कि पुरानी विधि अभी भी वहां है, नया एक अधिभार के रूप में जोड़ा जाता है। इस मामले में, पुरानी विधि की ओर सभी कॉल व्यवहार के किसी भी बदलाव के बिना पहले की तरह कार्य करेंगे (जो पुनर्लेखन का बहुत ही उद्देश्य होता)।
सुपरक्लस में विधि को "आभासी" के रूप में घोषित करना भूल जाता है, लेकिन फिर भी इसे उप-वर्ग में फिर से लिखने का प्रयास करता है। हालांकि यह स्पष्ट रूप से स्वीकार किया जाएगा, व्यवहार बिल्कुल वांछित नहीं होगा: विधि वर्चुअल नहीं है, इसलिए सुपरक्लास की ओर पॉइंटर्स के माध्यम से पहुंच नए (उपclass ') विधि के बजाय पुरानी (superclass') विधि को कॉल करना समाप्त कर देगी।
जोड़ना "ओवरराइड" स्पष्ट रूप से इस स्पष्ट रूप से दिखाता:
- में सुपर क्लास
- यह एक ही नाम के साथ एक विधि है: इस के माध्यम से, एक संकलक कि तीन चीजें उम्मीद कर रहे हैं कह रहा है सुपरक्लास में विधि को "वर्चुअल" (जिसका अर्थ है, जिसे फिर से लिखा जाना है) के रूप में घोषित किया गया है।
- सुपरक्लास में विधि समान (इनपुट *) हस्ताक्षर उपclass (रीराइटिंग विधि)
में विधि के रूप में समान है
यदि इनमें से कोई भी गलत है, तो एक त्रुटि संकेतित की जाती है।
* नोट: आउटपुट पैरामीटर कभी-कभी अलग होता है, लेकिन संबंधित प्रकार होता है। रुचि रखते हैं तो covariant और contravariant परिवर्तन के बारे में पढ़ें।
हाँ। –
हालांकि यह दोहरी जांच नहीं है। यह एकमात्र जांच है। –
@ निकोस अच्छा बिंदु;), – aiao