C++类成员的访问控制
2012-07-05 20:27
218 查看
1. 不考虑继承
C++的访问控制属性有以下三种:public, protected, private;
公有类型成员用public关键字声明,任何一个来自外部的访问都必须通过这种类型的成员来访问,公有类型声明了类的外部的唯一接口。
私有类型成员用private声明,私有类型的成员只允许本类的成员函数来访问,而类外部的任何访问都是非法的。这样就完成了私有成员的封装。
在不考虑继承的情况下,保护类型protected的性质和私有类型的性质一致。
2. 考虑继承
类的继承方式有公有继承public, 私有继承private, 和保护继承protected三种,不同的继承方式,导致原来具有不同访问属性的基类成员在派生类中的访问属性也有所不同。这里所说的访问来自两个方面:一是派生类中的新增成员对从基类继承来的成员的访问;二是在派生类外部,通过派生类的对象对从基类继承来的成员的访问。
公有继承public: 当派生类对基类的继承方式为公有继承,基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们。其他外部使用者只能通过派生类的对象访问继承来的公有成员,而无论是派生类的成员还是派生类的对象都无法直接访问基类的私有成员(基类的私有成员只能由基类本身的成员访问)。
私有成员private: 当类的继承方式为私有继承时,基类中的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问它们,但是在类外部通过派生类的对象无法访问。无论是派生类的成员还是派生类对象都无法访问从基类继承来的私有成员。
保护继承protected: 保护继承中,基类的公有和保护成员都以保护成员的身份出现在派生类中,即派生类的其他成员都可以直接访问从基类继承来的公有和保护成员,但在类外部通过派生类对象无法访问它们。基类的私有成员不可访问。
切记:无论何种继承,基类的private数据成员,只能有基类的对象访问,其它访问都是无效非法的。
C++的访问控制属性有以下三种:public, protected, private;
公有类型成员用public关键字声明,任何一个来自外部的访问都必须通过这种类型的成员来访问,公有类型声明了类的外部的唯一接口。
私有类型成员用private声明,私有类型的成员只允许本类的成员函数来访问,而类外部的任何访问都是非法的。这样就完成了私有成员的封装。
在不考虑继承的情况下,保护类型protected的性质和私有类型的性质一致。
2. 考虑继承
类的继承方式有公有继承public, 私有继承private, 和保护继承protected三种,不同的继承方式,导致原来具有不同访问属性的基类成员在派生类中的访问属性也有所不同。这里所说的访问来自两个方面:一是派生类中的新增成员对从基类继承来的成员的访问;二是在派生类外部,通过派生类的对象对从基类继承来的成员的访问。
公有继承public: 当派生类对基类的继承方式为公有继承,基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们。其他外部使用者只能通过派生类的对象访问继承来的公有成员,而无论是派生类的成员还是派生类的对象都无法直接访问基类的私有成员(基类的私有成员只能由基类本身的成员访问)。
私有成员private: 当类的继承方式为私有继承时,基类中的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问它们,但是在类外部通过派生类的对象无法访问。无论是派生类的成员还是派生类对象都无法访问从基类继承来的私有成员。
保护继承protected: 保护继承中,基类的公有和保护成员都以保护成员的身份出现在派生类中,即派生类的其他成员都可以直接访问从基类继承来的公有和保护成员,但在类外部通过派生类对象无法访问它们。基类的私有成员不可访问。
切记:无论何种继承,基类的private数据成员,只能有基类的对象访问,其它访问都是无效非法的。
相关文章推荐
- C++类成员的访问控制
- c++类成员的访问控制
- 浅谈c++类成员的三种访问控制方式和类继承派生时的三种继承方式
- C++小知识:C++类中成员的访问控制属性有哪些类型,什么区别
- 继承与派生:派生类对基类成员的访问控制之保护继承与私有继承
- 鸡啄米:C++编程入门系列之三十七(继承与派生:派生类对基类成员的访问控制之公有继承)
- c++基类成员在派生类中的访问控制
- C++类的访问控制
- C++类访问控制及继承
- C++学习之继承中的成员访问控制
- 三十八、继承与派生:派生类对基类成员的访问控制之保护继承与私有继承
- 【转】C++类中对同类对象private成员访问
- 使用InternalsVisibleToAttribute控制internal成员的访问
- ActionScript3 中的封装 (类的成员 类 包与访问控制)
- Java成员的默认访问控制
- 对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )
- 成员的访问控制
- java的类成员访问控制权限
- C++类成员访问
- C++继承中的成员访问控制