“类对象”和“成员函数”,前者的权限决定了在能否在外部使用,而后者是开发者写好的。
protected成员的作用是让派生类能够访问,但是自己的类对象不能访问。在基类中变量的类型和继承的类型共同决定了在派生类中有哪些变量,以及是否对外公开。
派生类成员函数(内部)能否访问一个变量只取决于在基类中给他的类型;而变量在派生类对象中的类型是基类中的定义和继承方式取较严格的那一个
class Base{ private: int a; protected: int b; public: int c; }; class D1: private Base{ void f1(){ a=1; // error b=1; c=1; } }; class D2: protected Base{ void f2(){ a=2; // error b=2; c=2; } }; class D3: public Base{ void f3(){ a=3; // error b=3; c=3; } }; class D11: public D1{ void f11(){ a=11; // error b=11; // error c=11; // error } };
。