class Actor
{
string _name;
bool _gender;
public:
......
}
class Monk:public Actor
{
public:
patter();
}
void Monk::patter()
{
cout<<_name<<":_......"<<endl;
}
这样的代码,编译器会报错,error:“Actor::_name”:无法访问private成员
现在问题产生了:我们希望在Monk类中访问到基类的成员。但是又不希望该成员对外公开?
c++为此提供了protected关键字,该保护类型成员的含义是:该类的派生类可以使用该类型的成员,但对外来说,他还是私有的。所以对于设计类的时候,就要考虑:如果该类会被继承,那么其可能被派生类访问的成员需要声明为protected类型!
上列中,class Actor可以这样写:
class Actor
{
protected:
string _name;
bool _gender;
public:
......
}
这样的话,在MonK::patter中访问_name就不会出错
但是类的对象依然是不能访问protected的成员的
Monk tang;
tang._name="唐三藏";
error:“Actor::_name”:无法访问protected成员