संभव डुप्लिकेट:
Why is it allowed to call derived class' private virtual method via pointer of base class?मैं सी ++ में बाहर से निजी विधि का उपयोग क्यों कर सकता हूं?
हाल ही में, मैं, एक अजीब सवाल मुलाकात plz निम्नलिखित कोड का संदर्भ लें:
#include <iostream>
using namespace std;
class A
{
public:
virtual void disp() {
cout<<"A disp"<<endl;
}
};
class B : public A
{
private:
void disp() {
cout<<"B disp"<<endl;
}
};
int main()
{
A a;
a.disp();
A *b = new B();
b->disp();
}
और आउटपुट है:
A disp
B disp
मुझे आश्चर्य है कि क्यों पॉइंटर बी disp() का उपयोग कर सकता है? यह निजी है! यही है ना
प्राप्त करने के दौरान विधियों के संरक्षण स्तर को मजबूत करने के लिए यह एक बुरा अभ्यास है, यह उस वर्ग के लिए नहीं है जिसे आप – fork0
'ए :: डिस्प' के माध्यम से एक्सेस कर रहे हैं; यह एकमात्र 'डिस्प' है जिसका मुख्य उपयोग है। –