0 前言
本篇文章将讨论派生类和虚函数如何与其他语言功能相互作用。例如访问控制、名字查找、指针和类型转换等等。
所谓类层次结构也就是类的继承机构,一个有向无环图。这里我们规定基类在上层,子类在下层。例如:
本文按基础部分和延伸部分进行排版。上篇也就是所谓的基础篇。
1 访问控制与继承方式
类中的成员可以是private、protected或public修饰。
----如果一个成员是private修饰,它的名字只能由其声明所在类的成员函数与友元使用。
----如果一个成员是protected修饰,它的名字只能由其声明所在类的成员函数和友元,以及由该类派生类的成员函数和友元使用。
----如果一个成员是public修饰,它的名字可以由任何函数使用。
下面来说说这些访控制的一贯用法。
class A{
private:
//私用成员
protectted:
//保护成员
public:
//公用成员
};
class中默认为private成员,而struct中默认为public。
一般类中的数据成员或者函数成员,你不希望别人直接访问,就可将其设为私用部分,而在public中留有使用的接口。举个例子就是你口袋的人民币肯定要设为私有成员,因为你肯定不希望别人能够直接访问你的口袋有多少钱。别人要想知道这个信息,肯定只有通过你,你就留下了public访问的接口。数据隐藏的简单公用和私用模型能够很好地满足具体类型设计的需要。
protected控制可以理解为你儿子是你的继承者,如果你口袋的钱这个成员属于protected,那么你儿子是可以直接访问的,这下就会出现一个问题。在你不经意的情况下,你儿子会对你口袋的钱数进行修改。这也就对数据的破坏敞开的大门。不过幸好,class中private修饰为默认,对于大量数据存在的基类,供派生类使用的情况总存在一些替代方案。