虛函式預設引數的問題記錄

2021-05-01 16:54:19 字數 337 閱讀 9728

剛看了看專案裡的問題,對虛函式預設引數的問題有點兒遺忘,翻了翻資料:

the result is: "i is 3"

原因:為什麼c++堅持這種有違常規的做法呢?答案和執行效率有關。如果預設引數值被動態繫結,編譯器就必須想辦法為虛函式在執行時確定合適的預設值,這將比現在採用的在編譯階段確定預設值的機制更慢更複雜。做出這種選擇是想求得速度上的提高和實現上的簡便,所以大家現在才能感受得到程式執行的高效;當然,如果忽視了本條款的建議,就會帶來混亂。

另外注意如果派生類的foo函式沒有預設函式,並且編寫以下**:

derived d;

d.foo();

這樣是編譯不過去的

虛函式的預設引數問題

q include using namespace std class base 乙個表示幾何形狀的類 class shape class rectangle public shape class circle public shape 用圖形來表示是下面這樣 shape rectangle cir...

C 中 虛函式中的預設引數問題

原文 nwplei的部落格 當通過指標呼叫乙個物件的方法時,如果該方法是虛函式,則實際呼叫的是該例項的方法。當預設引數和虛函式一起出現的時候到底用哪個預設值呢?虛函式是動態繫結的,但是為了執行效率,預設引數是靜態繫結的。也就是 指標是哪種型別,就呼叫該型別對應的類中,該函式定義時的預設值。inclu...

C 中 虛函式中的預設引數問題

當通過指標呼叫乙個物件的方法時,如果該方法是虛函式,則實際呼叫的是該例項的方法。當預設引數和虛函式一起出現的時候到底用哪個預設值呢?虛函式是動態繫結的,但是為了執行效率,預設引數是靜態繫結的。也就是 指標是哪種型別,就呼叫該型別對應的類中,該函式定義時的預設值。include using names...