在下面的程式中類derived繼承了類base:
class
base};
class
derived
:public base};
intmain
(void
)
第二行沒有動態繫結,呼叫函式f(),這個是派生類版本的,直接輸出derived,什麼型別就是什麼型別。
第三行進行了動態繫結,但是只有在呼叫虛函式的時候,動態繫結才有效,而f()是虛函式,所以第四行輸出derived。假如派生類中的f()前面去掉virtual,它仍然是虛函式,因為它覆蓋(返回型別、形參列表一樣)了基類的f()。
如果把基類的f()宣告成普通函式(去掉virtual),那麼此時不會發生動態繫結,呼叫靜態型別的f(),第四行輸出base。
在基類的f()是虛函式的前提下,如果派生類沒有函式覆蓋,那麼derived繼承了f(),然後第二行會輸出derived。
C 中的虛函式virtual
在某基類中宣告 virtual 並在乙個或多個派生類中被重新定義的成員函式稱為虛函式。虛函式的作用就是實現多型性 polymorphism 多型性是將介面與實現進行分離。c 作為完全物件導向語言,所有函式並不預設為virtual,但可以在基類中宣告關鍵字virtual,就可以在其派生類中通過關鍵字o...
C 虛函式 virtual
定義虛函式 為了指明函式為虛函式,在其返回型別前面加上保留字virtual,目的是啟用動態繫結。繼承層次的根類一般都要定義虛析構函式。成員預設為非虛函式,對非虛函式的呼叫在編譯時確定。除建構函式外,任意非static成員函式都可以是虛函式。保留字virtual只在類內部的成員函式宣告 現,不能用在類...
C 虛函式virtual!!!!!!!!!!
1.虛函式出現的作用 重寫父類的方法 2.虛函式的好處 用父類的指標指向子類的例項,呼叫子類的成員函式,這種技術可以讓父類的指標有多種形態,稱之多型。我們都知道,如果子類想用父類的 子類可以選擇繼承父類。如果普通成員函式,我作為父類,只是希望子類你能夠呼叫就好,不要修改它的功能。而父類宣告成virt...