2011-03-31 51 views
2

可以按照我们希望的方式更改继承类的接入级别吗?更改继承类的级别

class Base { 

public: 
    size_t x; 

protected: 
    size_t y; 
}; 


class Derived : private Base { 

protected: 
    size_t x; 

public: 
    size_t y; 
}; 

是否Base类继承只有私有成员或Base所有成员将private默认?我试图交换访问级别,但我不明白我在这里做什么?

+0

你的意思是“衍生类继承...” – 2011-03-31 19:30:57

+0

是的,我的意思是说。 – Ant 2011-03-31 19:33:53

回答

3

不,Derived不能突然决定它会偷取阅读privateBase中的成员的能力。

你实际上在做什么是完全创建不同的变量在Derived,它们碰巧具有相同的名称。

+1

[...]并隐藏基类变量。 – Xeo 2011-03-31 19:52:31

+0

@Xeo:确实。我以为我会在那一天离开那个细节,因为它与这里没有直接的关系,而现在知道这种方法不是他想要的 - 不会再深入他的尝试,因为他会发现隐藏的名字作为问题。 – 2011-03-31 23:09:20

2

当您从Base继承private修饰符时,会发生什么情况:只有Derived类才能访问Base的成员。如果您决定创建从Derived继承的AnotherDerived,那么您将无法访问Base的任何成员。

有关继承和访问说明符的更多信息,请检查link