目錄應用:計算器類
純虛函式和抽象類
虛析構和純虛析構
型別轉換
多型性提供介面與具體實現之間的另一層隔離,將「什麼」和「怎麼做」分開分類
動態多型(函式位址晚繫結)
#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 的類機制中有支援多型的技術來解決抽象程式設計,它用的是一種滯後 技術,這種技術,通過預先設定其成員函式的虛函式性質,使得任何 該成員函式的未定型別的物件操作在編譯時,都以乙個不確定的指標特殊地 引命代發 來編碼,到了執行時,遇到確定型別的物件,才突然制定其真正的行為。即滯後到執行時,根據具體型別...