我无法理解这个访问修饰符
I cant understand this access modifier
我是C++的初学者。我今天有一个编程测试。但我无法理解这个例子。
class A
{
public:
int w;
};
class B : public A
{
public:
int x;
};
class C : private A
{
public: int y;
};
class D : protected B
{
public: int z;
};
int main()
{
D d;
d.w = 10; // compile error
}
我认为(D d; d.w = 10)是正确的,但它有编译错误。
D 由 B 派生(受保护),B 由 A 派生(public)。
所以,我认为 D 可以访问 A class 成员,因为
Class乙:public甲
{ public:int x}
==>
Class乙
{ public: int w;整数 x;}
and Class D : 保护 B
{ public: 整数 z}
==>
classD
{public: 整数 z;受保护:int w, int x;}
为什么我错了??谢谢!
D
可以看到A
和B
的成员,但是由于protected
的继承,只有D
和类派生自D
知道 D
是 B
并且可以访问 B
和 A
成员。 main
不是从 D
派生的,因此 main
不知道 D
对 B
的继承,因此无法访问继承的 A
和 B
名成员。
我是C++的初学者。我今天有一个编程测试。但我无法理解这个例子。
class A
{
public:
int w;
};
class B : public A
{
public:
int x;
};
class C : private A
{
public: int y;
};
class D : protected B
{
public: int z;
};
int main()
{
D d;
d.w = 10; // compile error
}
我认为(D d; d.w = 10)是正确的,但它有编译错误。
D 由 B 派生(受保护),B 由 A 派生(public)。 所以,我认为 D 可以访问 A class 成员,因为
Class乙:public甲 { public:int x} ==> Class乙 { public: int w;整数 x;}
and Class D : 保护 B { public: 整数 z} ==> classD {public: 整数 z;受保护:int w, int x;}
为什么我错了??谢谢!
D
可以看到A
和B
的成员,但是由于protected
的继承,只有D
和类派生自D
知道 D
是 B
并且可以访问 B
和 A
成员。 main
不是从 D
派生的,因此 main
不知道 D
对 B
的继承,因此无法访问继承的 A
和 B
名成员。