——C++访问类别除了private、public,还有protected。函数
对外部世界来讲,保护成员的行为与私有 成员类似。spa
对于派生类来讲,保护成员的行为与公有成员类似。设计
用于数据成员时的缺陷。code
用于成员函数时的优势。blog
对外部世界。class
关键字protected与private类似,在类外只能用公有类成员来访问protected部分中的类成员。变量
对派生类。方法
关键字protected与public类似,派生类能够直接访问基类的保护成员。数据
缺陷。di
使用保护数据成员能够简化代码的编写工做(派生类能够直接使用基类的protected数据成员,而数据成员之前一般是private成员,这将须要使用额外的基类公有访问函数或保护函数来查看或修改基类private数据成员,而且公有访问函数对外界开放,而protected数据成员只对派生类可见),但存在设计缺陷。
尽管如此,若数据成员是受保护的,类被设计成只能经过成员函数才能修改该数据成员,protected属性将忽略该保护措施,容许直接访问,这实际上使protected数据成员成为了公有变量(对派生类而言)。
void BrassPlus::Reset(double amt) { balance = amt; // balance is protected }
所以最好对类数据成员采用私有访问控制,不要使用保护访问控制;同时经过基类方法使派生类可以访问基类数据。
优势。
对于成员函数来讲,保护访问控制颇有用,它让派生类可以访问公众不能使用的内部函数。
-----