C ++授予访问权限

时间:2018-07-12 12:45:50

标签: class c++11 inheritance public protected

在C ++中, 虽然不允许访问权限将变量从受保护的变量降级为公共变量,但这种情况正在发生。

#include<iostream>
using namespace std;

class base {
    protected: int x;    // x is protected
};

class derived: private base { 
    public: base::x;     //demoting from protected to public must not happen
};

int main(){
    derived d1;
    d1.x=10;            //protected variable x is being accessed using an object**
    cout<<d1.x<<endl;
}

1 个答案:

答案 0 :(得分:0)

int对象不是protected,而只是名称 base::x

您的主张“正在访问保护变量x”是不正确的。它不是。 derived::x是公共成员,仅引用base::x

public可以看到protected的{​​{1}}和base成员,这是访问derived变量protected的地方,通过访问声明。