c++继承访问权限问题


// 基类 Base
class Base {
public:
    int publicMember;
protected:
    int protectedMember;
private:
    int privateMember;
};
// 公有继承
class PublicDerived : public Base {
public:
    void accessBaseMembers() {
        publicMember = 1;      // 可以直接访问公有成员
        protectedMember = 2;   // 可以直接访问保护成员
        //privateMember = 3;     // 无法直接访问私有成员
    }
};
int main() {
    PublicDerived obj1;
    obj1.accessBaseMembers();
    cout << obj1.publicMember << endl;
    cout << obj1.protectedMember << endl;

为什么在public派生类中可以访问protected成员,而在主函数中无法cout

受保护的成员,顾名思义它是受这个类保护的,只有它和它的子类内部可以直接访问, main函数中是外围调用, 无法直接访问

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7528727
  • 这篇博客也不错, 你可以看下c++ cout 按列输出
  • 除此之外, 这篇博客: c++ 总结之 cout输出中的 修改十六进制显示时的大小写 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    1. 使用 uppercase / nouppercase 控制符,同样是两种方式都可以: uppercase(cout) 和  cout<<uppercase。设置 uppercase 后,十六进制数字 ff 将显示为 FF。
    2. 调用 setf() / unsetf() 函数,实际上第一种方法就是对 setf() 的调用。