【发布时间】:2018-12-20 17:03:41
【问题描述】:
在 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;
}
【问题讨论】:
-
您的问题到底是什么?为什么这段代码有效?或者为什么它不起作用?或者可以改变什么来阻止它工作?
-
假设基变量名为
y,派生类使用int x = base::y。那么我希望你的例子没有任何问题 -
代码起作用的原因是在派生类中的公共部分编译器将您的代码视为
int x = base::x并且派生类 x 变量是公共的 -
@KarstenKoop 抱歉之前没有澄清,我想问一下为什么代码有效。
标签: class c++11 inheritance public protected