在C++中,override
是一個(gè)函數(shù)修飾符,用于顯式地聲明一個(gè)成員函數(shù)是對(duì)基類中的虛函數(shù)進(jìn)行重寫。
在C++中,當(dāng)一個(gè)函數(shù)在基類中被聲明為虛函數(shù)時(shí),派生類可以選擇是否重寫這個(gè)函數(shù)。使用override
關(guān)鍵字可以增加代碼的可讀性,并確保編譯器能夠檢測到重寫錯(cuò)誤。
使用override
的語法如下:
class Base {
public:
virtual void foo();
};
class Derived : public Base {
public:
void foo() override; // 使用override顯式地重寫B(tài)ase中的foo函數(shù)
};
在上面的例子中,Derived
類顯式地重寫了Base
類中的foo
函數(shù),并使用override
關(guān)鍵字進(jìn)行了標(biāo)記。如果Derived
類中沒有重寫foo
函數(shù),或者重寫的函數(shù)與基類中的虛函數(shù)簽名不匹配,編譯器將會(huì)發(fā)出錯(cuò)誤。
使用override
關(guān)鍵字的好處是:
override
的函數(shù)會(huì)自動(dòng)更新,避免了忘記更新函數(shù)簽名的錯(cuò)誤。需要注意的是,override
關(guān)鍵字只能用于派生類中的虛函數(shù)重寫,不能用于非虛函數(shù)或靜態(tài)函數(shù)。此外,C++11引入的final
關(guān)鍵字可以用于阻止派生類對(duì)虛函數(shù)的重寫。