#include <iostream>
using namespace std;
class A{
public:
A(int _x,int _y,int _z):x(_x),y(_y),z(_z){}
int x;
int getP(){
return x*y*z;
}
protected:
int y;
private:
int z;
};
class B:public A{ //继承并没有真正的得到父类的成员
public:
B(int _x,int _y,int _z):A(_x,_y,_z){}
int getX(){
return x;
}
int getY(){
return y;
}
/* 是不允许的,因为z是private的
int getZ(){
return z;
}
*/
};
class C:protected A{ //继承并没有真正的得到父类的成员
public:
C(int _x,int _y,int _z):A(_x,_y,_z){}
int getX(){
return x;
}
int getY(){
return y;
}
/* 是不允许的,因为z是private的
int getZ(){
return z;
}
*/
};
int main(){
A a(1,2,3);
B b(4,5,6);
C c(7,8,9);
cout<<a.x<<" "<<a.getP()<<endl; //cout<<a.y<<" "<<a.z<<endl;都是不允许的。
cout<<b.x<<" "<<b.getP()<<endl; //cout<<b.y<<" "<<b.z<<endl;都是不允许的。
//cout<<c.x<<" "<<c.y<<" "<<c.z<<b.getP()<<endl;都是不允许的。
cout<<c.getX()<<" "<<c.getY()<<endl;
return 0;
}
//总结:
//1.父类中protected在对于外部而言是privated对于子类来说是public
//2.继承方式只是针对外部而言,内部不变。内部访问权限不变
//3.继承来的本质上不是自己的,否则父类中privated就应该可以被子类调用
C++访问控制
最新推荐文章于 2024-01-10 20:58:37 发布