Why C++ inheritance not allow base class's public member inherit to derived class's private member? -
i wondering inheritance.
class base{ public: virtual int f(){return 0;} }; class derived:public base{ private: virtual int f(){return 100000;} }; int g(base & b){ return b.f(); } int main(void){ base b; cout << "g(b) = " << g(b) << endl; derived d; cout << "g(d) = " << g(d) << endl;
}
i have 2 class 1 base class have virtual function f , other derived class have inheritance base class. derived class has virtual function f private member function. problem in base class virtual function f public member, in derived class virtual function f private member. , when execute program result
g(b) = 0 g(d) = 100000
i think implies value base & b(in function g) can control derived private member. not allow use. wondering why shold not redefine public member in base class private member in derived class?
so wondering why shold not redefine public member in base class private member in derived class?
there no technical reason ban tightening of access specifier of override of public virtual member function of public parent. language allows it. program formed, , behaviour defined. however, there practical reason ever such thing, because member of parent still accessible , virtual dispatch reaches private override have demonstrated.
other languages have made different decisions on matter. example, java not allow override tighten access modifier.