在C++中,純虛函數和虛函數都與面向對象編程中的多態性有關,但它們之間存在一些區別。
1、純虛函數(Pure Virtual Function):
純虛函數是在基類中聲明的沒有實際實現的虛函數。
通過將函數聲明為純虛函數,可以使基類成為抽象類,這意味著它不能直接實例化對象。
子類必須實現純虛函數,否則子類也將成為抽象類。
聲明純虛函數的語法是在函數聲明末尾加上 “= 0″:virtual void functionName() = 0;
示例:
class Base {
pubpc:
virtual void pureVirtualFunction() = 0; // 純虛函數
};
class Derived : pubpc Base {
pubpc:
void pureVirtualFunction() override {
// 子類必須實現純虛函數
// 具體的實現代碼
}
};
2、虛函數(Virtual Function):
虛函數是在基類中聲明并使用關鍵字 “virtual” 的函數。
虛函數可以被子類重寫(override),并且根據實際調用的對象類型動態地決定調用哪個函數實現。
基類指針或引用可以用于調用虛函數,實現運行時多態。
示例:
class Base {
pubpc:
virtual void virtualFunction() {
// 基類的虛函數實現
}
};
class Derived : pubpc Base {
pubpc:
void virtualFunction() override {
// 子類重寫了基類的虛函數
// 具體的實現代碼
}
};
總結:
純虛函數是沒有實際實現的虛函數,用于定義接口和創建抽象類。
虛函數是在基類中聲明并有默認實現的函數,可以被子類重寫,并通過運行時多態性進行動態分派。