#include <iostream>
using namespace std;
class A
{
public: int pub_num;
protected: int pro_num;
private: int pri_num;
};
//public 继承方式
class B:public A
{
public:
void SetPub(int m_pub){
pub_num = m_pub;
}
void SetPro(int m_pro){//Right,子类内部可以访问父类的保护成员,和继承方式无关
pro_num = m_pro;
}
//void SetPri(int m_pri){ // ERROR 这里会报错子类不能访问父类的私有成员
// pri_num = m_pri;
//}
};
//protected 继承方式,这时子类继承自父类的成员变量会变成受保护的成员
class C:protected A
{
public:
void SetPub(int m_pub){
pub_num = m_pub;
}
void SetPro(int m_pro){//Right,子类内部可以访问父类的保护成员,和继承方式无关
pro_num = m_pro;
}
//void SetPri(int m_pri){ // ERROR 这里会报错子类不能访问父类的私有成员
// pri_num = m_pri;
//}
};
//private 继承方式,这时子类继承自父类的成员变量会变成私有的
class D:private A
{
public:
void SetPub(int m_pub){
pub_num = m_pub;
}
void SetPro(int m_pro){//Right,子类内部可以访问父类的保护成员,和继承方式无关
pro_num = m_pro;
}
//void SetPri(int m_pri){ // ERROR 这里会报错子类不能访问父类的私有成员
// pri_num = m_pri;
//}
};
int main(int argc, char *argv[])
{
B bb;
bb.pub_num = 1;
// bb.pro_num = 2; //ERROR 子类外部不能访问受保护成员
// bb.pri_num = 3; //ERROR 子类外部不能访问私有成员
C cc;
// cc.pub_num =1; //ERROR pub_num 已经为受保护成员,类外部不能访问
D dd;
// dd.pub_num = 1; //ERROR pub_num已经为私有成员,类外部不能访问
system( "pause ");
return 0;
}