首页 理论教育C++程序设计基础教程:成员访问权限

C++程序设计基础教程:成员访问权限

【摘要】:在类声明中,public、private和protected是关键字,称为成员访问限定符,它们分别表示公有、私有和保护的成员访问权限。其他函数不能访问该类的保护数据成员,也不能调用该类的保护成员函数。◇一旦给出了成员访问限定符,它后面的成员都具有这个成员访问权限,直到出现另一个成员访问限定符或类声明结束为止。类的成员函数可以访问类的所有成员,没有任何限制,而类的对象对类的成员的访问是受成员访问控制符制约的。

在类声明中,public、private和protected是关键字,称为成员访问限定符,它们分别表示公有、私有和保护的成员访问权限。

◇private:定义私有成员。私有数据成员只允许类内函数访问,私有成员函数只允许在类内调用。类外函数不允许访问私有数据成员,也不允许调用私有成员函数。

◇public:定义公有成员。公有数据成员允许类内或类外的函数访问,公有成员函数允许在类内或类外调用。

◇protected:定义保护成员。保护数据成员只允许类内或其子类中函数访问,保护成员函数允许在类内或其子类中调用。其他函数不能访问该类的保护数据成员,也不能调用该类的保护成员函数。

在C++中,有关类的访问权限的一些规定如下:

◇在默认的情况下,一个类中所有的成员都是私有的。

◇一旦给出了成员访问限定符(如public:),它后面的成员都具有这个成员访问权限(如后面的成员均为公有的),直到出现另一个成员访问限定符或类声明结束为止。

这里需要先区分类的成员对类对象的可见性和对类的成员函数的可见性的不同。类的成员函数可以访问类的所有成员,没有任何限制,而类的对象对类的成员的访问是受成员访问控制符制约的。(www.chuimin.cn)

例如声明了一个类MyClass1:

定义该类的一个对象a:

MyClass1 a;

其成员访问的合法性如下:

类MyClass1具有私有成员i,它可以由该类的成员函数geti()访问,保护成员和公有成员也一样。但是,不能通过类MyClass1的实例对象来访问该类的私有成员i和保护成员j。

一般来说,公有成员是类的对外接口,而私有成员和保护成员是类的内部实现,不希望外界了解。将类的成员划分为不同访问级别有两个好处:一是信息隐蔽,即实现类的封装,将类的内部实现和外部接口分开,这样使用该类的程序不需要了解类的详细实现;二是数据保护,即将类的重要信息保护起来,以免其他程序不恰当地修改。