前言
"打牢基础,万事不愁" .C++的基础语法的学习
引入
嵌套类的理解和使用
嵌套类(内部类)的特征
嵌套类是在类里面定义的类.class里嵌套另一个class,又称内部类(这种说法更形象)
1>内部类除了定义在外部类内部,和其他类没有太大区别.内部类对于外部类自动"可见",外部类可以包含内部类对象(包括指针),外部类对于内部类类型不完整.代码如下:
class Person{}; //定义一个类型,不放内容
class Outer {
class Inner {
// Outer outer; //内部类不能包含外部类对象.报错:不允许使用不完整的类型
Person person; //内部类可以包含其他类型
};
Inner inner; //外部类可以包含嵌套类型对象
};
----分析:生成外部类Outer对象时,需要先生成内部类Inner对象(),如果内部类包含了Outer对象,那么又需要先生成Outer对象,逻辑上矛盾,所以内部类不包含外部类对象.
2>内部类可见性
可见性不止在内部类,在其他地方,比如继承也有用到.public表示公开,private表示私有,protect表示派生类可见.基本上都差不多.有一个简单建议:全部public.反正代码是你自己写的,没人看,岂不是很省事.到需要的时候再修改.
注意:类内部还是遵循数据私有,接口公开的原则
嵌套类(内部类)的使用
<C++ Prime Plus> 6th Edition这本书上(下称"本书")讲内部类的内容不多,但举的经典例子,就是链队列 .本书上说嵌套类是用于服务于某个类而产生
1.做结点类
结点就是链表类型,有数据域和指针域.结点类包含了数据和本类指针,形成新的数据类型,加上外部类的算法,形成各种满足数据结构的数据的组合.结点类非常适合做成内部类
2.做迭代器
迭代器也是个内部类,他以实现指针功能为目的,本质上是对包含数据的重复访问