前言
? ? ? ?"打牢基礎,萬事不愁" .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.做迭代器
? ? ? ? 迭代器也是個內部類,他以實現指針功能為目的,本質上是對包含數據的重復訪問
????????