मेरा प्रश्न शायद एक उदाहरण द्वारा सबसे अच्छा समझाया जाएगा।बेस क्लास से ओवरराइड फ़ंक्शन को कॉल करना?
उदाहरण के लिए, मैं 2 श्रेणियां होती हैं: एक आधार वर्ग और एक व्युत्पन्न वर्ग:
class baseClass
{
public:
baseClass()
{
foo();
}
virtual bool foo() { printf("baseClass"); return false;}
};
class derivedClass : public baseClass
{
public:
bool foo()
{
printf("derivedClass");
return true;
}
};
जब मैं derivedClass
का एक उदाहरण बनाने के लिए, baseClass
में निर्माता के नाम से जाना जाएगा, और यह है से foo()
बुलाया जाएगा निर्माता। समस्या यह है कि बेसक्लास 'कन्स्ट्रक्टर अपने foo()
पर कॉल कर रहा है और व्युत्पन्न क्लास ओवरराइड किए गए foo()
पर ओवरराइड नहीं किया गया है। क्या बेस क्लास ओवरराइड फ़ंक्शन को कॉल करने के लिए वैसे भी है, न कि यह फ़ंक्शन की अपनी परिभाषा है?
+1: रचनाकार विशेष और tricksy हैं;) – James
उत्तर के लिए धन्यवाद! मैं अब बेवकूफ की तरह महसूस करता हूं क्योंकि मुझे पहले से ही यह पता होना चाहिए था। धन्यवाद:] – Brad
कुछ ऐसा करने के तरीकों के लिए, सी ++ एफएक्यू लाइट 23.6 देखें: http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.6 – aschepler