Olası Çoğalt:
Son
Why is it allowed to call derived class' private virtual method via pointer of base class?neden C++ uygulamasında dışarıdan özel yönteme erişebiliyorum?
, ben plz aşağıdaki kodu bakın garip bir soru buluştu:
#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();
}
ve çıktısı:
A disp
B disp
İşaretçi b'nin neden disp'e erişebileceğini merak ediyorum()? Gizlidir! Öyle değil mi?
Size A :: disp' herkese açıktır ' – fork0
aracılığıyla erişiyor sınıf için değil kaynaklanan Ancak bu yöntemler koruma seviyesini güçlendirmek için kötü bir uygulamadır; Bu, ana erişimin sahip olduğu tek şeydir. –