Possible Duplicate:
C++: overriding public\private inheritanceव्युत्पन्न वर्ग
class base {
public:
virtual void doSomething() = 0;
};
class derived : public base {
private: // <-- Note this is private
virtual void doSomething()
{ cout << "Derived fn" << endl; }
};
अब
में निजी आभासी समारोह अगर मैं निम्नलिखित है:
base *b = new child;
b->doSomething(); // Calls the derived class function even though that is private
प्रश्न:
- यह व्युत्पन्न वर्ग समारोह कॉल करने के लिए भले ही सक्षम है यह निजी है यह कैसे संभव है?
अब मैं संरक्षित/निजी एक संकलन त्रुटि, मैं पाने के लिए जनता से विरासत पहुँच विनिर्देशक बदलते हैं:
'type cast' : conversion from 'Derived *' to 'base *' exists, but is inaccessible
नोट: मैं विरासत पहुँच विनिर्देशक की अवधारणाओं के बारे में पता कर रहा हूँ। तो दूसरे मामले में यह निजी/संरक्षित व्युत्पन्न है, यह पहुंच योग्य नहीं है। लेकिन मुझे पहले सवाल के जवाब के बारे में आश्चर्य है। किसी भी इनपुट की अत्यधिक सराहना की जाएगी।
मुझे लगता है कि वह जानना चाहता है कि त्रुटि का स्रोत क्या है, यह जानने के बजाय एक्सेस विनिर्देशक इस तरह से क्यों काम करता है। – Hossein