(一四〇)访问控制:protected

  1. 云栖社区>
  2. 博客>
  3. 正文

(一四〇)访问控制:protected

零零水 2016-02-04 01:58:00 浏览510

关键字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),不要使用保护访问控制;同时通过基类方法使派生类能够访问基类数据。