cpp_access_rights - ShenYj/ShenYj.github.io GitHub Wiki

权限控制

成员访问权限

  • 成员访问权限、继承方式有3种

    • public:公共的,任何地方都可以访问(struct默认)
    • protected:子类内部、当前类内部可以访问
    • private:私有的,只有当前类内部可以访问(class默认)
  • 子类内部访问父类成员的权限,是以下2项中权限最小的那个

    • 成员本身的访问权限
    • 上一级父类的继承方式
  • 开发中用的最多的继承方式是public,这样能保留父类原来的成员访问权限

  • 访问权限不影响对象的内存布局

示例代码

struct Person {

public:
    int m_age;

};

/// 继承时可设置访问权限: 私有继承
struct Student: private Person {
    
};

struct GoodStudent: Student {

    void study() {
        /// 编译报错
        /// 因为 Student 继承时设置了private(私有继承), m_age 权限为 private, 作为子类的 GoodStudent 无权访问
        m_age = 10;
    }
};
⚠️ **GitHub.com Fallback** ⚠️