c/c++ 面向對象的特性

面向對象的3大特徵是:封裝,繼承,多態

面向對象的5大原則:單一職責原則(Single-Resposibility Principle):

                              開放封閉原則(Open-Closed principle):

                              Liskov替換原則(Liskov-Substituion Principle)

                              依賴倒置原則(Dependecy-Inversion Principle):

                              接口隔離原則(Interface-Segregation Principle):


類和對象:類是由數據成員和成員函數構成的,是抽象的,但對象是具體的

封裝:

所謂封裝,就是把客觀的事物封裝成抽象的類,並且類可以讓自己的數據和方法只讓可信的類和對象操作,對不可信的進行信息隱藏。它可以隱藏實現代碼,使得代碼模塊化

一個類就是一個封裝了數據以及操作這些數據的代碼的邏輯實體,在一個對象內,某些代碼或者是某些數據是可以私有的,不能被外界訪問

對象對數據內部提供了不用級別的保護,以防止程序中無關的部分意外的或者錯誤的改變了對象的私有部分

封裝性:

拷貝函數

               淺拷貝:指的是在對象複製時,只是對對象中的數據成員進行簡單的賦值,默認拷貝構造函數執行的也是淺拷貝

               深拷貝:對於對象中動態成員,就不能僅僅簡單的賦值了,而應該重現動態分配空間

構造函數與析構函數

               構造函數主要用來初始化數據

               析構函數主要用來釋放堆區申請的內存空間

指針與引用

               相同點是:指針指向一塊內存,它的內容是所指的內存的地址;而引用僅僅是某塊內存的別名

               不同點是:指針是一個實體,而引用僅僅是個別名

                                   引用只能在定義時被初始化,之後不可變;指針可變;引用從一而終,指針可以見異思遷

                                   引用沒有const,指針有const,const的指針不可變

                                   引用不能爲空,指針可以爲空

                                   sizeof(引用)得到的是所指向的變量的大小,而sizeof(指針)得到的是指針本身的大小

                                   指針和引用的自增++運算意義不一樣

                                   引用是類型安全的,而指針不是,因爲引用比指針多了類型檢查



繼承:

所謂繼承,就是讓某個類型的對象獲得另一個對象的屬性的方法

繼承的能力是:繼承的類可以使用現有的類的所有功能,並且可以無需編寫原來類的基礎上對這些類進行擴展,

通過繼承創建的類稱爲子類或者派生類,被繼承的類稱爲基類,派生類,超類

繼承的實現方法:

1:實現繼承是指在原來類的基礎上直接使用原來類的屬性和方法而無需編寫代碼的能力

2:接口繼承是指僅使用方法和屬性的名稱,但是子類必須提供實現的功能


繼承性:

派生類的繼承方式

公有繼承:基類的共有成員和保護成員作爲派生類的成員時,他們都保持原來的狀態,而基類的私有成員仍然是私有的

保護繼承:基類的所有成員公有成員和保護成員都成爲派生類的保護成員,而且只能被它的派生類成員函數或者友元訪問,基類的私有成員仍然是私有的

私有繼承:基類的共有成員和保護成員都作爲派生類的私有成員,並且不能被這個派生類的子類訪問


友元函數:是一種定義在類外部的普通函數,但是它需要在類體內進行說明

                      friend 類型友元函數表

特點:友元函數可以訪問類中的所有成員,一般函數只能訪問類中的公有成員

            某類的友元函數的作用域但並非該類作用域

            友元函數破壞了面向對象程序設計類的封裝性,所以友元函數若不是必須使用,儘量少用

構造函數.複製構造函數.析構函數.賦值運算符不能被繼承





多態:

一個類實例的相同方法在不用情形有不用表現形式。多態機制使得具有不用內部結構的對象可以共享相同的外部接口。雖然針對不用對象的具體操作不同,但通過一個公共的類,這些操作可以通過相同的方式被調用

多態實現的兩種方法:父類指針指向子類對象

                                       將一個基類的引用類型賦值爲它的派生類實例


this指針:

一個對象的this指針並不是對象本身的一部分,不會影響sizeof(對象)的結果,this作用域是在類的內部,當在類的非靜態(就是前面沒加static)。成員函數中訪問類的非靜態成員的時候,編譯器會自動將本身的地址作爲一個隱含參數傳遞給函數。也就是說,各成員的訪問均通過this指針進行,但是值得注意的是,靜態成員沒有thus指針


多態性:

相同對象收到不用消息或不同對象接受相同的命令而做出的不同反應叫做多態

動態分爲靜態綁定和動態綁定

靜態綁定:函數重載,在編譯時函數和函數的實現就關聯在一起,主要是通過重載和模板實現,在宏多態中,是通過定義變量,編譯時直接吧變量替換,實現宏多態

動態綁定:主要通過繼承和虛函數的實現,父類指針或者引用你能夠指向子類對象,調用子類的虛函數,所以在編譯時是無法確定調用那個虛函數,每個子類都維護這一張虛函數表


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章