C++:对同类对象成员的访问权限问题
4 class A
5 {
6 public:
7 A(int i) : a(i){}
8
9 protected:
10 int a;
11 };
12
13 class B : public A
14 {
15 public:
16 B(int i) : A(i) {}
17 void fb(A&a) {cout<<a.a<<endl;}
18 };
protect.cpp: In member function ‘void B::fb(A&)’:
protect.cpp:10: error: ‘int A::a’ is protected
protect.cpp:17: error: within this context
若将17行改为
17 void fb(B&a) {cout<<a.a<<endl;}
则编译运行都没问题
问题:
为什么成员函数fb能够访问同类(B)对象的保护成员却不能访问其基类(A)的保护成员,况且这个成员本来就继承自A