अगर मैं सी ++ में है:सी ++ वर्चुअल फ़ंक्शन कार्यान्वयन?
class A {
private: virtual int myfunction(void) {return 1;}
}
class B: public A {
private: virtual int myfunction(void) {return 2;}
}
फिर अगर मैं class B
में myfunction
परिभाषा से virtual
निकालने के लिए, इसका मतलब यह है कि अगर मैं एक class C
class B
पर आधारित है, के लिए किया था कि मैं इसे के बाद से myfunction
ओवरराइड नहीं कर सका स्थिर रूप से संकलित किया जाएगा?
इसके अलावा, मैं उलझन में हूं कि जब आप सार्वजनिक रूप से स्विच करते हैं, और यहां निजी होते हैं तो क्या होता है। यदि मैं की परिभाषा class B
में सार्वजनिक होने के लिए बदलता हूं (और class A
में से एक निजी रहता है), क्या यह किसी प्रकार की गंभीर त्रुटि है जो मुझे नहीं करना चाहिए? मुझे लगता है कि वर्चुअल फ़ंक्शंस को एक ही प्रकार को रखने की आवश्यकता है ताकि यह अवैध हो, लेकिन कृपया यह बताएं कि क्या यह गलत है।
धन्यवाद!
व्युत्पन्न क्लास विधियों के लिए स्पष्ट रूप से "वर्चुअल" कीवर्ड लिखने की आवश्यकता नहीं है। आप इसे छोड़ सकते हैं, लेकिन यह एक अच्छी शैली है। – varnie