权限"/>
【c++ 回顾】protect 权限
- 类似于private权限, protect的权限对于类的使用着来说是不可见的
- 类似与pubic权限,protect的权限对于基类的派生类和友元是可见的
- 无法通过派生类访问基类对象的protect的成员
第三条就保证了无法通过派生类来绕过protect权限
例如
#include <iostream>class Base {
protected:int x;
};class Sneaky : public Base {void test1(Sneaky &sneaky) {sneaky.x = 0;}void test2(Base &base) {base.x = 0; // 不可以的。。}
};int main() {return 0;
}
第三条条款的另一种说法
如果member
是直接定义在Y
里面的protected
或private
成员,只有当X
和Y
相同,才能够访问。在这里,因为static_cast<Y&>(y)
的类型是Y&
,X
和Y
不一样,所以答案自然是不能。
class Y
{
protected:int member;
};class X : public Y
{
public:void Method(X& y){&(static_cast<Y&>(y).member);}
};
更多推荐
【c++ 回顾】protect 权限
发布评论