C 之 基礎概念補充

2021-10-08 20:12:49 字數 1026 閱讀 1519

c++實現物件導向的三個基本工具是:封裝、繼承、多型。

乙個物件直接使用另乙個物件的屬性和方法。

優點:減少重複的**。

繼承是多型的前提。

繼承增加了類的耦合性。

缺點:繼承在編譯時刻就定義了,無法在執行時刻改變父類繼承的實現;

父類通常至少定義了子類的部分行為,父類的改變都可能影響子類的行為;

如果繼承下來的子類不適合解決新問題,父類必須重寫或替換,那麼這種依賴關係就限制了靈活性,最終限制了復用性。

多型性可以簡單地概括為「乙個介面,多種方法」,程式在執行時才決定呼叫的函式,它是物件導向程式設計領域的核心概念。當多型應用形參型別的時候,可以接受更多的型別。當多型用於返回值型別的時候,可以返回更多型別的資料。多型可以讓你的**擁有更好的擴充套件性。

多型分兩種分別為靜態多型和動態多型:

過載 overload(同域,同名,引數不同,返回值任意)

函式名相同,引數列表不同。

過載只是在類的內部,或者說在同一作用域存在。

但是不能靠返回型別來判斷。過載雖然函式名一樣,但是對於編譯器來說其實是不同的函式,過載包括傳入引數個數不同,型別不同等,不能通過返回值不同來判斷。

重寫 override(不同域,同名,引數相同,返回值相同)派生類函式覆蓋同名基類函式

被重寫的函式不能是static的。必須是virtual的

重寫函式必須有相同的型別,名稱和引數列表

重寫函式的訪問修飾符可以不同。儘管virtual是private的,派生類中重寫改寫為public,protected也是可以的

重定義 (redefining) (不同域,同名,引數&返回值任意)派生類函式隱藏同名基類函式

子類重新定義父類中有相同名稱的非虛函式

引數列表和返回型別可以不同

隱藏物件的屬性和實現細節,僅僅對外提供介面和方法。

優點: 1)隔離變化;2)便於使用; 3)提高重用性; 4)提高安全性

缺點: 1)如果封裝太多,影響效率; 2)使用者不能知道**具體實現。

C 繼承和多型概念補充

一,繼承和多型 類之間的繼承 基類,父類 成員變數 描述類的屬性 成員函式 功能 派生類 子類 體現出與基類的不同 繼承 基類與派生類之間訪問許可權 1.public繼承 基類裡面的公有成員變數被繼承後在派生類中也是公有的 可以在類外被訪問 基類裡面的保護成員變數被繼承後在派生類中可以被訪問,在派生...

c 基礎概念之深淺拷貝

舉例 include using namespace std class myclass 拷貝建構函式 myclass const myclass c 一般函式 void show 拷貝建構函式是一種特殊的建構函式,函式的名稱必須和類名稱一致,它必須的乙個引數是本型別的乙個引用變數。舉例 inclu...

C 基礎概念之延遲載入

延遲載入,亦稱延遲例項化,延遲初始化等,主要表達的思想是,把物件的建立將會延遲到使用時建立,而不是在物件例項化時建立物件,即用時才載入。這種方式有助於提高於應用程式的效能,避免浪費計算,節省記憶體的使用等。針對於這種做法,似乎稱之為即用即建立更為合適些。先來看一下在framework4.0中如何實現...