关键字protected的作用,和关键字private的作用有一定相似。
①类外无法访问protected的成员(和私有部分类似);——对于类外方法,他就像私有成员一样
②类的派生类,可以访问protected成员(就像访问公有成员那样);——对于派生类方法,他就像公有成员一样
例如:
class Name { protected: string name; ... } class Man :public Name { ... public: void show() { cout << name << endl; } }
这样是可以的。
而:
void reset(const Name&na) { name = na; }
由于reset ()不是Name的友元函数,因此是不能这样做的。
对成员函数来说,保护访问控制protected很有用,因为他可以让派生类直接访问数据成员,而不需要基类有返回private部分的方法。
但书上说,最好对类数据成员采用私有访问控制(private),不要使用保护访问控制;同时通过基类方法使派生类能够访问基类数据。