继承成员权限
父类成员变量和成员函数权限类型为public, protected, private
继承的方式同时也有这三种public, protected, private
父类权限\继承方式 | public | protected | private |
---|
public | public | protected | private |
protected | protected | protected | private |
private | 不可访问 | 不可访问 | 不可访问 |
可以看出,父类中的private成员,虽然确实也继承到了子类,但是子类的成员无法访问;父类的public和protected成员在继承后的权限是父类权限和继承方式中的严格版。
所以父类的private成员,子类的成员函数无法访问,无论是继承来的还是自己新添加的,都无法访问父类的私有成员,只能通过在成员函数中调用父类的非private成员函数(因为无法访问调用private成员)间接访问父类的私有成员
class A
{
public:
A(int a_, int b_):a(a_),b(b_){}
int geta()
{
return a;
}
private:
int a;
int b;
};
class B:protected A
{
public:
B(int a_,int b_,int c_):A(a_,b_), c(c_){}
int getaa()
{
return geta();
}
private:
int c;
};
int main()
{
B MY{1,2,3};
cout<<MY.getaa()<<endl;
cout<<MY.geta()<<endl;
return 0;
}