#include<iostream>
using namespace std;
class Base {
public:
    int m_A;
protected:
    int m_B;
private:
    int m_C;
};
class Son1 :public Base {
public:
    void func() {
        m_A = 10;//公共权限
        m_B = 10;//保护权限
        //m_C = 10;子类不可访问
    }
};
//公共继承方式下父类公共权限的成员变成子类公共权限的成员
//父类保护权限的成员变成子类保护权限的成员
//父类私有权限的成员子类在类内不可访问
class Son2 :protected Base {
public:
    void func() {
        m_A = 10;//保护权限
        m_B = 10;//保护权限
        //m_C = 10;子类不可访问
    }
};
//保护继承方式下父类公共权限的成员变成子类保护权限的成员
//父类保护权限的成员变成子类保护权限的成员
//父类私有权限的成员子类在类内不可访问
class Son3 :private Base {
public:
    void func() {
        m_A = 10;//私有权限
        m_B = 10;//私有权限
        //m_C = 10;子类不可访问
    }
};
//私有继承方式下父类公共权限的成员变成子类私有权限的成员
//父类保护权限的成员变成子类私有权限的成员
//父类私有权限的成员子类在类内不可访问
int main() {
    Son1 s1;
    s1.m_A = 100;
    //s1.m_B = 200;保护权限的成员类外访问不到
    //s1.m_C = 300;私有权限的成员类外访问不到
    system("pause");
    return 0;
}