C++學習第11篇-類的深入

來源:互聯網
上載者:User

1. 建構函式初始化表

之前的類的建構函式的初始化都是使用賦值=來完成;

對於常量和引用參數,簡單的賦值=是不足夠的。

1)初始化列表

賦值有顯式和隱式賦值兩種。

之前的類的初始化如:


現在,採用一種初始化列表:


如所示,初始化列表位於建構函式的參數之後,以':'標誌,每個變數的初始化採用隱式賦值,變數直接以逗號隔開。

這樣,對於常量變數,可以在初始化列表中初始化;

初始化列表常用於複合類和繼承。

2. 複合類

現實中,複雜的對象都是由較小和較為簡單的對象構成;

由簡單對象建立複雜物件的過程稱作合成。

合成通常使用在有has-a關係的對象;

通常的基礎資料型別 (Elementary Data Type)可以滿足構造簡單和小的對象。

為了從小的對象建立複雜的對象,C++提供了複合類-將小的類作為複合類的成員變數。

例如:

Point2D.h


Creature.h:


Main.h:


使用複合類的好處:

A)每個單獨的類可以保持相對簡單和直觀,負責其自己的任務;

B)每個對象可以自包含,更易重用;

C)複合類使用簡單的類完成複雜的工作,只需注重子類之間的資料流程。

到底何時適合使用複合類呢?這個沒有固定的答案,只需記住每個類應該完成單一的工作。

複合類不需考慮組合子類的實現細節,這些都是子類所關心的。

3. 彙總類

在上一節中,複合類對象的各個子類對象,隨著複合類對象的銷毀而銷毀。

彙總類是複合類中比較特殊的類型,彙總對象和子物件之間沒有從屬關係;當彙總對象銷毀時,子物件並沒有銷毀。

一個很簡單的例子:

一個學校的部門由多個老師構成,並不是說部門擁有(own)了這些老師,她們僅僅是在那裡工作;這時,部門可以看作是一個彙總類;

當部門撤銷或解散了,老師還是老師,並沒有消失;她們還可以分配到其他部門工作。(不像電腦一樣,電腦銷毀了,內部的CPU、主板等等都銷毀了)

在彙總類中,也是將子類加到複合類中,形式是引用或者指標,引用或指向了在類外已經定義的對象;當綜合物件銷毀了,這些對象依然存在的。

例如:


複合類和彙總類的異同:

複合類:A)可以使用常規變數;B)可以使用指標,如果涉及動態分配和釋放記憶體;C)負責每個子類的建立和銷毀;

彙總類:A)通常使用指標執行類外的已存在對象;B)可以使用指向對象的引用值;C)不需要負責每個子類的建立和銷毀。

彙總類非常使用,但風險也高;特別要注意記憶體的分配與釋放,預防記憶體流失。

4. 容器類

現實中,容器是最常見的。容器的容量是容器能夠儲存多少的能力。

類似,容器類是用以裝載和組織其他類的執行個體的。

大多時候用的容器是數組;數組通常提供了動態長度,以及邊界檢查。

容器類典型應用了標準的最小功能集。

好的定義容器通常包含如下功能:

1)建立一個空的容器;2)插入一個新的元素對象;3)報告當前容器的元素個數;4)清空容器的所有元素;5)提供訪問元素的方法;6)排列元素(可選)。

容器類通常分2種:值容器-只包含了對象的拷貝;引用容器-包含了對象的引用。

在C++中,容器通常只包含一種資料類型;

容器是非常有用的,它使編程更容易、安全和快速。

下面是一個典型的例子-數組容器類:






Main.cpp:

【免責特此聲明:
1)本內容可能是來自互連網的,或經過本人整理的,僅僅代表了互連網和個人的意見和看法!
2)本內容僅僅提供參考,任何參考該內容造成任何的後果,均與原創作者和本部落格作者無關!】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.