override關鍵字作用:
如果派生類在虛函式宣告時使用了override描述符,那麼該函式必須過載其基類中的同名函式,否則**將無法通過編譯。
舉例子說明
struct base
;struct derivedmid: public base
;struct derivedtop : public derivedmid
;
(之前聽過,但是沒看過結構體重載 ==)
如果沒有使用override關鍵字,上面的寫法編譯可以通過但是執行的效果與真實意願(希望過載)不符
舉例子說明
class
testoverride
;class
b: public testoverride
;
上面的1-5個過載函式編譯過程中,除了返回值不同的infor會報錯以外,其他函式都不會有問題,但是在類例項化的時候會提示是抽象類,因為他們都沒有真正實現過載
class
c: public testoverride
;
新增了override以後,會在編譯器override修飾符則可以保證編譯器輔助地做一些檢查,上面的情況無法通過編譯
結論 如果派生類裡面是像過載虛函式 就加上關鍵字override 這樣編譯器可以輔助檢查是不是正確過載,如果沒加這個關鍵字 也沒什麼嚴重的error 只是少了編譯器檢查的安全性
C override 關鍵字用法
override關鍵字作用 如果派生類在虛函式宣告時使用了override描述符,那麼該函式必須過載其基類中的同名函式,否則 將無法通過編譯。舉例子說明 struct base struct derivedmid public base struct derivedtop public derive...
const關鍵字用法
1 const常量 如const int max 100 優點 const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤 邊際效應 2 const修飾類的資料成員 class a const...
restrict關鍵字用法
概括的說,關鍵字restrict只用於限定指標 該關鍵字用於告知編譯器,所有修改該指標所指向內容的操作全部都是基於 base on 該指標的,即不存在其它進行修改操作的途徑 這樣的後果是幫助編譯器進行更好的 優化,生成更有效率的彙編 舉個簡單的例子 int foo int x,int y 很顯然函式...