C 用純虛函式實現協議委託的例子

2022-09-23 15:57:13 字數 550 閱讀 6954

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 過載以後以多型...