您的位置:首页 > 编程语言 > C语言/C++

C++类成员的访问控制

2012-07-05 20:27 211 查看
1. 不考虑继承

     C++的访问控制属性有以下三种:public, protected, private;

      公有类型成员用public关键字声明,任何一个来自外部的访问都必须通过这种类型的成员来访问,公有类型声明了类的外部的唯一接口。

      私有类型成员用private声明,私有类型的成员只允许本类的成员函数来访问,而类外部的任何访问都是非法的。这样就完成了私有成员的封装。

      在不考虑继承的情况下,保护类型protected的性质和私有类型的性质一致。

2. 考虑继承

    类的继承方式有公有继承public, 私有继承private, 和保护继承protected三种,不同的继承方式,导致原来具有不同访问属性的基类成员在派生类中的访问属性也有所不同。这里所说的访问来自两个方面:一是派生类中的新增成员对从基类继承来的成员的访问;二是在派生类外部,通过派生类的对象对从基类继承来的成员的访问。

     公有继承public: 当派生类对基类的继承方式为公有继承,基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们。其他外部使用者只能通过派生类的对象访问继承来的公有成员,而无论是派生类的成员还是派生类的对象都无法直接访问基类的私有成员(基类的私有成员只能由基类本身的成员访问)。

     私有成员private: 当类的继承方式为私有继承时,基类中的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问它们,但是在类外部通过派生类的对象无法访问。无论是派生类的成员还是派生类对象都无法访问从基类继承来的私有成员。

     保护继承protected: 保护继承中,基类的公有和保护成员都以保护成员的身份出现在派生类中,即派生类的其他成员都可以直接访问从基类继承来的公有和保护成员,但在类外部通过派生类对象无法访问它们。基类的私有成员不可访问。

     切记:无论何种继承,基类的private数据成员,只能有基类的对象访问,其它访问都是无效非法的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ c