關於c 的虛函式的一些總結

2021-06-16 17:39:47 字數 359 閱讀 6819

對於什麼時候子類會覆蓋父類中的函式:

(1)如果子類的東西和父類是一樣的,那麼肯定是子類覆蓋父類中的函式

(2)如果子類的函式和父類的函式一模一樣,就是前面少了個virtual那麼,子類還是覆蓋父類的函式

(3)如果子類和父類的函式返回值不一樣,那麼子類是不覆蓋父類的函式

(4)最糾結的應該算是對於引數含有預設值的情況,其實這個情況,在編譯器中是認為是有引數的,並不是沒有引數,所以如果不一樣的話,那很顯然是不一樣的,但是對於子類和父類預設值不同是沒有關係,因為這個東西在編譯的時候只是認為他們有這樣的乙個引數而已。

(5)對於同乙個函式,子類有virtual,而父類是沒有virtual那麼,這個情況的是認為他們是兩個不同的函式。

虛函式的一些總結

虛函式與虛函式表 1 每個類只有乙個虛函式表 如 cout int int bb1 其中對於 cout int int bb1 bb1是取得物件的首位址,因為含有虛函式的物件中的首位址儲存的是虛指標的位址,所以 bb1就是虛指標的位址 int bb1是將虛函式的位址解釋為int型別 int bb1 ...

C 裡面關於虛函式的一些注意點

最後,總結一下關於虛函式的一些常見問題 1 虛函式是動態繫結的,也就是說,使用虛函式的指標和引用能夠正確找到實際類的對應函式,而不是執行定義類的函式。這是虛函式的基本功能,就不再解釋了。2 建構函式不能是虛函式。而且,在建構函式中呼叫虛函式,實際執行的是父類的對應函式,因為自己還沒有構造好,多型是被...

虛函式的一些想像

看了vc中虛函式的實現原理,突然覺得很有意思,就寫了如下的 答案是 classb d 11,c 99 classa.showb b 11 classa.showa a 99 可能有些奇怪,但是想清楚了就覺得很自然了。首先classa和classb都擁有虛函式,對於這樣的類就會有乙個公共的虛函式表,採...