C++中的純虛函數(shù)(Pure Virtual Function)是一種特殊的虛函數(shù),它允許我們在基類中聲明一個虛函數(shù),但不提供具體的實現(xiàn)
= 0
來聲明一個純虛函數(shù)。例如:class Base {
public:
virtual void pureVirtualFunction() = 0; // 純虛函數(shù)
};
抽象類:包含至少一個純虛函數(shù)的類稱為抽象類。抽象類不能被實例化,只能作為基類被繼承。
多態(tài):純虛函數(shù)是實現(xiàn)多態(tài)的一種方式。通過基類的指針或引用調(diào)用派生類的純虛函數(shù),可以實現(xiàn)動態(tài)綁定。例如:
class Derived : public Base {
public:
void pureVirtualFunction() override {
// 實現(xiàn)具體功能
}
};
Base* basePtr = new Derived(); // 使用基類指針指向派生類對象
basePtr->pureVirtualFunction(); // 調(diào)用派生類的純虛函數(shù),實現(xiàn)多態(tài)
接口:純虛函數(shù)可以被視為一種接口,它定義了一組類需要實現(xiàn)的功能。通過將一組具有相同功能的純虛函數(shù)放在一個抽象類中,可以確保所有派生類都實現(xiàn)了這些功能。
繼承:當(dāng)一個類繼承自包含純虛函數(shù)的抽象類時,它必須實現(xiàn)所有的純虛函數(shù),否則它也將成為抽象類。派生類可以通過override
關(guān)鍵字顯式地表示它們重寫了基類的純虛函數(shù)。
設(shè)計原則:純虛函數(shù)有助于實現(xiàn)開閉原則(對擴展開放,對修改關(guān)閉),因為它允許在不修改現(xiàn)有代碼的情況下添加新的派生類。這有助于提高代碼的可維護性和可擴展性。