C 學習筆記之 多型

2022-05-06 11:57:11 字數 2247 閱讀 5781

目錄應用:計算器類

純虛函式和抽象類

虛析構和純虛析構

型別轉換

多型性提供介面與具體實現之間的另一層隔離,將「什麼」和「怎麼做」分開

分類

動態多型(函式位址晚繫結)

#include using namespace std;

// 動物類

class animal

};class dog : public animal

};class cat : public animal

};void dospeak(animal &a)

void test01()

int main()

動物在說話

動物在說話

此時我們需要位址晚繫結

#include using namespace std;

// 動物類

class animal

};class dog : public animal

};class cat : public animal

};void dospeak(animal &a)

void test01()

int main()

狗在說話

貓在說話

應用

#include using namespace std;

// 動物類

class animal

};class dog : public animal

};class cat : public animal

};void dospeak(animal &a)

void test()

int main()

貓在說話
#include using namespace std;

// 開閉原則:對拓展進行開放 對修改進行關閉

class abstractcalculator

int m_a;

int m_b;

};class addcalculator : public abstractcalculator

};class mulcalculator : public abstractcalculator

};int main()

30

200

使用多型可以方便拓展和修改

class abstractcalculator

// 純虛函式

// 當類中有了純虛函式時,這個類屬於抽象類

// 抽象類無法建立物件

// 當子類繼承了抽象類,那麼這個子類必須重寫父類中的虛函式,否則子類也是抽象類

virtual int getresult() = 0;

int m_a;

int m_b;

};

#include #include using namespace std;

class animal

// 利用虛析構可以解決不呼叫子虛構的問題

// virtual ~animal()

virtual ~animal() = 0; // 純虛析構需要有宣告,也需要有實現

};animal::~animal()

class cat : public animal

char *m_name;

void speak()

~cat()

}};int main()

animal構造函式呼叫

小貓tom在說話

cat的析構函式呼叫

animal的純虛析構函式呼叫

C 學習筆記之多型 多型的學習 多型學習

c 學習筆記之多型 多型的學習 多型學習 多型分為兩類 靜態多型 函式過載和運算子過載屬於靜態多型,復用函式名 動態多型 派生類和虛函式實現執行時多型 靜態多型和動態多型的區別 靜態多型的函式位址早繫結 編譯階段確定函式位址 動態多型的函式位址晚繫結 執行階段確定函式位址 動態多型滿足條件 動態多型...

C 學習之多型

多型性是物件導向程式設計中的乙個重要特徵,利用多型性可以設計和實現乙個易於拓展的系統。在c 語言中,多型性是指具有不同功能的函式可以用同乙個函式名,這樣就可以用乙個函式名呼叫不同內容的函式,發出同樣的訊息被不同型別的物件接收時,導致完全不同的行為。多型性通過聯編實現。聯編是指乙個電腦程式自身彼此關聯...

C 學習之多型

c 的類機制中有支援多型的技術來解決抽象程式設計,它用的是一種滯後 技術,這種技術,通過預先設定其成員函式的虛函式性質,使得任何 該成員函式的未定型別的物件操作在編譯時,都以乙個不確定的指標特殊地 引命代發 來編碼,到了執行時,遇到確定型別的物件,才突然制定其真正的行為。即滯後到執行時,根據具體型別...