2012-01-22 286 views
3

可能重複:
C++ Overriding… overwriting?覆蓋與覆蓋

什麼overrideoverwrite之間的區別?我聽說他們可以互換使用,但我懷疑這是不正確的。

+3

你的意思是「覆蓋與**過載**」? –

+0

覆蓋不是一個常見的C++術語。 –

+0

@VaughnCato,好吧,你也可以使用C++中的文件;-) –

回答

1

override是用來覆蓋基礎虛擬方法的C++ 11關鍵字:

class A 
{ 
    virtual f(int) {} 
}; 

class B 
{ 
    virtual f(int) override {} // override A::f(int) 
}; 

這可讓您確保A::F(int)被重寫,這意味着你沒有創建新的虛擬功能。 當然如果函數簽名不同,這段代碼將不會編譯。

覆蓋不是C++關鍵字,它基本上意味着覆蓋一些文件或文本與新的一個。

關鍵字override已被引入,因爲程序員有時不知道他是否覆蓋或者他是否正在創建具有不同簽名的新虛擬方法。 使用該關鍵字可以獲取錯誤或覆蓋虛擬方法。

+0

如果不是答案中的拼寫錯誤數目,那麼會+1 ... –

1

您只能覆蓋寫入內容和寫入位置,而您可以在別處覆蓋其他內容(例如,您可以覆蓋派生類中的基類成員)。