天天看點

C++語言的三大特性

         又重新看了一個多月的書,也算是基本上了解了一些很基礎的東西,學習C++就得掌握它所具備的三大特性。

        封裝性是基礎,繼承性是關鍵,多态性是補充,并且多态性存在于繼承的環境中。

        封裝性

        C++語言中支援資料封裝,類是支援資料封裝的工具,對象是資料封裝的實作。在封裝中,還提供一種對資料通路的控制機制,使得一些資料被隐藏在封裝體内,是以具有隐藏性。封裝體與外界進行資訊交換是通過操作接口進行的。這種通路控制機制展現在類的成員可以有公有成員(public),私有成員(private),保護成員(protected)。

        私有成員是在封裝體内被隐藏的部分,隻有類體内說明的函數(類的成員函數)才可以通路私有成員,而在類體外的函數時不能通路的,公有成員是封裝體與外界的一個接口,類體外的函數可以通路公有成員,保護成員是隻有該類的成員函數和該類的派生類才可以通路的。

        類是一種複雜的資料類型它是将不同類型的資料和與這些資料相關的操作封裝在一起的集合體。是以,類具有對資料的抽象性,隐藏性和封裝性。

        繼承性

        C++語言允許單繼承和多繼承。繼承是面向對象語言的重要特性。一個類可以根據需要生成它的派生類,派生類還可以再生成派生類。派生類繼承基類的成員,另外,還可以定義自己的成員。繼承是實作抽象和共享的一種機制。

        C++語言中的繼承機制可以克服傳統的面向過程程式設計的缺點,因為傳統程式設計方式不能重複使用程式而造成資源的浪費,而c++語言提供了無限重複利用程式資源的一種新途徑。

       多态性

       多态性是指對不同類的對象發出相同的消息将會有不同的實作。多态性也可以了解為,在一般類中定義的屬性或服務被特殊類繼承後,可以具有不同的資料類型或不同的實作。可見,多态性與繼承性相關聯。簡單的說,多态性是指發出同樣的消息被不同的資料類型的對象接收後導緻不同的行為。

       C++語言支援多态性表現在:

       1,C++語言允許函數重載和運算符重載。

       2,C++語言通過定義虛函數來支援動态聯編,動态聯編是多态性的一個重要的特征。

       多态特性的工作依賴虛函數的定義,在需要解決多态問題的重載成員函數前,加上virtual關鍵字,那麼該成員函數就變成了虛函數,從上例代碼運作的結果看,系統成功的分辨出了對象的真實類型,成功的調用了各自的重載成員函數。

  多态特性讓程式員省去了細節的考慮,提高了開發效率,使代碼大大的簡化,當然虛函數的定義也是有缺陷的,因為多态特性增加了一些資料存儲和執行指令的開銷,是以能不用多态最好不用。