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成員