मैं अपने अधिकांश वर्गों को दो कार्यों के साथ क्रमबद्ध करता हूं, पढ़ता हूं() और लिखता हूं()। मैं क्या करना चाहता हूं, उप-वर्गों से बुलाए गए बेस क्लास के पढ़ने/लिखने() फ़ंक्शन को इतना है कि मुझे क्रमशः कोड को कई बार दोहराना नहीं है।सी ++ में ओवरराइड होने के बाद मूल फ़ंक्शन को कैसे कॉल करें?
उदाहरण के लिए:
class Base
{
public:
base();
virtual read(QDataStream&);
virtual write(QDataStream&);
private:
int a, b, c, d;
}
class Sub : public Base
{
public:
Sub();
read(QDataStream&);
write(QDataStream&);
private:
int e, f, g, h;
}
तो इस उदाहरण में, मैं पढ़ने/लिखने ए, बी, सी, डी बेस से आने के लिए कोड चाहते हैं। उप तब बेस :: पढ़ा जाएगा (QDataStream &) और उसके बाद उप-गुण जो भी विशेष हैं, जोड़ दें। इस तरह मुझे प्रत्येक उपclass (और संभवतः ऐसा करने के लिए भूल जाते हैं) के लिए serialization कोड दोहराना नहीं है।
ध्यान दें कि यह वास्तव में एक विधि कहा जाता है "अधिभावी":
आप माता-पिता वर्ग संस्करण का उपयोग जब आप एक उपवर्ग में हैं गुंजाइश हल कर सकते हैं और। "अधिभार" तब होता है जब आपके पास कई विधियां होती हैं जिनका नाम समान होता है लेकिन जो विभिन्न प्रकार के तर्क लेते हैं। उदाहरण के लिए, तारों को शामिल करते समय + ऑपरेटर अर्थ देने के लिए एक स्ट्रिंग क्लास ऑपरेटर +() को ओवरलोड कर सकता है। – Caleb
आपको उदाहरणों को सही बनाने की कोशिश करनी चाहिए। सदस्य फ़ंक्शंस में रिटर्न प्रकार गुम हैं, इस प्रकार को 'बेस' कहा जाता है, लेकिन वहां 'बेस' कन्स्ट्रक्टर लगता है ... –
स्पेलिकेशन कैलेब के लिए धन्यवाद। – jecjackal