这三种类型才成员的区别在于,对于本类来说: 公有成员,外部可以访问的成员。 私有成员,外部不可以访问的成员。 保护成员,外部不可以访问的成员。
乍看起来,私有成员与保护成员的访问权限是相同的,使用私有成员就行了,貌似没有必要再多出来一个保护成员。 实际上,保护成员与私有成员的区别体现在继承上。
继承分为:公有继承,私有继承,保护继承。 公有继承,基类的公有成员和保护成员作为派生类的公有成员和保护成员,外部(派生类的对象)可以访问公有成员,无法访问保护成员; 私有继承,基类的公有成员和保护成员作为派生类的私有成员,外部(派生类的对象)不可以访问; 保护继承,基类的公有成员和保护成员作为派生类的保护成员,外部(派生类的对象)不可以访问;
#include <iostream.h> class Basic { private: int b1; protected: Basic(); int b2; F2(); public: F1(); }; Basic::Basic() { b1 = 1; b2 = 2; } Basic::F1() { cout<<b1<<endl; } Basic::F2() { cout<<b2<<endl; } class Device_Public : public Basic { }; class Device_Protected:protected Basic { }; class Device_Private:public Basic { }; void main() { Device_Public dpublic; dpublic.F1(); // dp.F2();//公有继承下:保护成员无法访问// Device_Protected dprotected; // dprotected.F1();//保护继承下:公有成员变成保护成员无法访问// // dprotected.F2();//保护继承下:保护成员变成保护成员无法访问// }