在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;
}
答案 0 :(得分:0)
int
对象不是protected
,而只是名称 base::x
您的主张“正在访问保护变量x”是不正确的。它不是。 derived::x
是公共成员,仅引用到base::x
。
public
可以看到protected
的{{1}}和base
成员,这是访问derived
变量protected
的地方,通过访问声明。