मैं आमतौर पर उन विधियों के लिए शुद्ध वर्चुअल फ़ंक्शंस का उपयोग करता हूं जो मेरे कोड द्वारा अच्छी तरह से काम करने के लिए आवश्यक हैं। इसलिए, मैं इंटरफेस बना देता हूं और फिर अन्य उपयोगकर्ता अपने व्युत्पन्न वर्गों को लागू करते हैं। व्युत्पन्न वर्गों में केवल इन आभासी कार्यों को सार्वजनिक के रूप में रखा जाता है जबकि कुछ अतिरिक्त विधियों को निजी के रूप में लागू किया जाना चाहिए क्योंकि मेरा कोड उन्हें कॉल नहीं करता है। मुझे नहीं पता कि इसे ओओपी के अच्छे अभ्यास के रूप में माना जा सकता है (क्या कोई डिज़ाइन पैटर्न है?)। वैसे भी, मेरा प्रश्न है: क्या उपयोगकर्ता एक शुद्ध वर्चुअल फ़ंक्शन अधिभारित कर सकता है?शुद्ध वर्चुअल फ़ंक्शन का अधिभार
अर्थात
class Base
{
public:
Base();
virtual ~Base();
virtual void foo(int,double)=0;
};
class Derived:
public Base
{
private:
// methods
public:
Derived();
virtual ~Derived();
virtual void foo(int, double, double); //this doesn't work
};
एक समाधान हो सकता है:
virtual void foo(int,double,double=0)=0;
आधार वर्ग में
लेकिन यह बहुत सीमित है। तुम क्या सोचते हो?
फ़ंक्शन ओवरलोड एक ** अलग API ** का प्रतिनिधित्व करते हैं। एक सार आधार वर्ग ** ** लगातार API ** का प्रतिनिधित्व करता है। तो नहीं, यह समझ में नहीं आता है। –
क्या आपका उदाहरण 'क्लास व्युत्पन्न: बेस' गायब नहीं है? – nonsensickle
@ गैरकानूनी: ठीक है, मैंने अभी संपादित किया है। धन्यवाद – Ale