C++和C的區別之一是,編程思想的不同——面向對象編程和過程性編程。面向對象編程(OOP)是一種特殊的、設計程序的概念性方法,其特性有: - 抽象; - 封裝和數據隱藏; - 多態; - 繼承; - 代碼的可重用性。 C++將這些特性整合在一起,提供了類。筆者這部分僅對類進行簡單的總結,高級特性以后進行總結。
基于計算機的概念是由外國人定義的,翻譯過來的術語概念總會限定我們的想法,所以不必拘泥于叫法,通俗的來說,對象看作是個體,每個個體都是一個對象,類是根據某些規則對多個個體的劃分歸類,抽象其實指的就是這些規則。定義一個類就是制定這些規則,定義一個對象就是依據這些規則創建一個能夠操作的實體。
類是一種將抽象轉換為用戶定義類型的C++工具,它將數據表示和操縱數據的方法組合成一個整潔的包。 類規范由兩個部分組成: - 類聲明:以數據成員的方式描述數據部分,以成員函數(成為方法)的方式描述公有接口。 - 類方法定義:描述如何實現類成員函數。 簡單的說就是,類聲明提供了類的藍圖,而方法定義則提供了細節。 接口是一個共享框架,供兩個系統交互時使用。對于類,接口指公共接口,通俗來說就是在public部分聲明的函數,提供給外部使用來操縱類對象。
關鍵字PRivate、public和protect,描述了類成員的訪問控制,通過這些關鍵字類實現了封裝和數據隱藏的功能。
用筆者的話講,封裝就是指規則和代碼不在同一個文件中,也就是將類聲明和類定義放在不同的文件中。一般來說,類聲明放在頭文件(.h)中,類定義放在.cpp文件中并且包含類聲明的頭文件,使用時將它們放在一起編譯運行。 在定義文件中,使用作用域解析運算符(::)來標示函數所屬的類,需要注意的是,類成員名和類成員函數參數名需要區分開來,可以在聲明時添加前綴或后綴的方式區分。
數據隱藏指用戶無法直接對類成員數據進行操作,保護數據的安全,數據隱藏也屬于封裝。通過關鍵字private實現隱藏,對于一個類,用戶只能直接使用在public部分定義的函數或變量,而在private中的內容,用戶不能直接使用。在private中的內容,只有類成員函數能使用。
構造函數是一個特殊的類成員函數,專門用于構造新對象、將值賦給它們的數據成員,函數名為類名,沒有返回值和聲明類型,程序聲明對象時,自動調用構造函數,可以顯式或隱式的調用構造函數,如果沒有定義構造函數的時候,編譯器會提供默認構造函數,如果定義了構造函數,那么必須定義默認構造函數。構造函數只能用來創建對象,而不能被對象調用。
析構函數也是一個特殊的類成員函數,負責完成清理工作,它的名稱也很特殊:在類名前加~,與構造函數一樣,沒有返回值和聲明類型,此外還沒有參數。調用析構函數由編譯器決定,通常不顯示的調用析構函數,一般在類對象過期時自動調用析構函數,如果沒有定義析構函數,編譯器隱式的提供默認析構函數。
每個成員函數都有一個this指針,this指針指向調用對象,如果方法需要引用整個調用對象,則可以使用*this表達式。 聲明類對象時可以使用列表初始化的方式。 當成員函數不修改調用對象時,應將其聲明為const,對數據進行保護。
新聞熱點
疑難解答
圖片精選