c++不像其他很多程式語言有介面、委託或者協議的概念,但是利用純虛函式和c++多重繼承的特性,我們也能實現介面、委託或協議要做的事情,下面的通過乙個人設定鬧鐘然後被鬧鐘喚醒的例子來說明如何在c++中實現委託**。
#include
#include
using std::cout;
using std::endl;
// 前向引用宣告
class person;
// 用純虛函式設計乙個協議
// 實現該協議的類有乙個被喚醒的行為
class awakable ;
// 鬧鐘類
class alarmclock ;
void alarmclock::alarmafter(int seconds) const
// 人類(實現了awakable協議可以被喚醒)
class person : public awakable ;
void person::rollclock(int seconds)
void person::beawaken()
C 中的虛函式 純虛函式
c 最重要的特性就是多型,而多型,就主要通過虛函式實現的。具體的實現過程是 基類中的函式定義為虛函式,派生類發生覆蓋 即函式名稱 引數列表 返回值型別完全相同 的情況下,派生類中的函式也會自動變成虛函式,不論加不加virtual關鍵字。此時,基類與子類物件中都會存在一張虛函式表 因為含有虛函式 具體...
純虛函式的預設實現
在幫新同事進行 審查的時候,常常會發現這樣的問題 中原有基類b和派生類d1,現在新加乙個派生類d2,它有乙個函式f2 由於經驗不足,新同事並沒有注意到d1也有類似的函式f1 於是造成了類似的 出現在了兩個地方,冗餘造成將來的維護工作異常困難。注意到f 實際上是乙個通用的行為,我們可以把它抽出來放到基...
C 中的虛函式和純虛函式
c 中的虛函式和純虛函式用法 1 虛函式和純虛函式可以定義在同乙個類 class 中,含有純虛函式的類被稱為抽象類 abstract class 而只含有虛函式的類 class 不能被稱為抽象類 abstract class 2 虛函式可以被直接使用,也可以被子類 sub class 過載以後以多型...