今天我想給自己寫點東西
最近感覺遇到了瓶頸,部落格也有一段時間沒有更新了,這段時間很迷茫很困惑,感覺不知道如何去學c++了,也沒有了當初的那種熱情。學習c++也有一段時間了,當自己想要去實現乙個專案的時候才發現自己的不足,沒有頭緒,完全不知從何下手。然後就這樣渾渾噩噩的度過了一段時間。有時候也在想自己是不是不適合程式設計,後來也想通了,自己下定決心要做的事難道就這麼放棄了嗎?這不是我!加油吧!!!
1.1.對c++多型的理解:
如果有幾個似而不完全相同的物件,有時我們要求在向它們發出同乙個訊息時,它們的反應各自不同,分別執行不同的操作。這種現象就是多型現象。
舉個例子:abc3個班是高三年級,他們有基本相同的屬性和行為,在同時聽到上課鈴聲的時候,他們會分別走向3個不同的教室,而不會走向同乙個教室。
多型的意義:
由繼承而產生的相關的不同的類,其物件對同一訊息做出的不同響應。(能增加程式的靈活性,可減輕系統公升級,維護,除錯的工作量和複雜度)
1.2.多型實現的前提:
賦值相容:需要積累物件的任何地方都可以使用公有派生類的物件來替代。賦值相容是一種預設行為,不需要任何的顯示轉化步驟。
賦值相容中所指的替代包括以下幾種情況:
1、派生類的物件可以賦值給基類物件。
2、派生類的物件可以初始化基類的引用。
3、派生類物件的位址可以賦給指向基類的指標。
在替代之後,派生類物件就可以作為基類的物件使用,但只能使用從基類繼承的成員。
#include
using namespace std;
class shape
void draw()
;class circle:public shape
void draw()
;int main()
1.3.多型形成的條件
1.3.1.靜多型,通過命名傾棧在編譯階段決定(函式過載)
1.3.2.動多型,在執行階段決定,不是在編譯階段決定。
1.4.虛函式
格式
class 類名
;
虛函式小結
1.在基類中用virtual宣告成員函式為虛函式,類外實現虛函式時,不用再加vritual。
2.在派生類中重新定義此函式稱為覆寫,要求函式名、返回型別、函式引數個數及型別全部匹配。並根據派生類的需要重新定義函式體。
3.當乙個成員函式被宣告為虛函式後,其派生類中完全相同的函式(顯示的寫出)也為虛函式。可以在其前加virtual以似清晰。
4.定義乙個指向基類物件的指標,並使其指向其子類的物件,通過該指標呼叫虛函式,此時呼叫的就是指標變數指向物件的同名函式。
純虛函式
**格式**
class 類名
;
舉個勺子
shape類中
virtual void draw() = 0;
circle類中
void draw()
測試
int main()
純虛函式小結
1.含有純虛函式的類稱為抽象基類,不可例項化(即不能建立物件)。存在的意義就是被繼承,提供公共介面。
2.純虛函式只有宣告,沒有實現。
含有虛函式的析構
含有虛函式的類,析構函式也應該宣告為虛函式。在delete分類指標的時候,會呼叫類的析構函式,實現完整析構。
C 中的多型
封裝 繼承 多型,物件導向的三大特性,前兩項理解相對容易,但要理解多型,特別是深入的了解,對於初學者而言可能就會有一定困難了。我一直認為學習oo的最好方法就是結合實踐,封裝 繼承在實際工作中的應用隨處可見,但多型呢?也許未必,可能不經意間用到也不會把它跟 多型 這個詞對應起來。在此拋磚引玉,大家討論...
C 中的多型
c 中的多型分為靜多型和動多型 也就是靜態繫結和動態繫結兩種現象 靜動的區別主要在於這種繫結發生在編譯期還是執行期,發生在編譯期的是靜態繫結,也就是靜多型 發生在執行期的則是動態繫結,也就是動多型。一 靜多型可以通過模板和函式過載來實現,下面舉兩個例子 1 函式模板 template t max c...
C 中的多型
定義 同樣的訊息被不同型別的物件接收時產生不同的行為。原理 1.編譯時多型 靜態繫結 2.執行時多型 動態繫結 分類 1.過載 包括函式過載,運算子過載 靜態繫結 2.覆蓋 包括子類和父類間虛函式 虛析構函式和純虛函式 動態繫結 要求 1.函式名相同 2.引數不同 栗子 include using ...