A虛函式說明

2021-08-21 18:55:48 字數 902 閱讀 7269

由於類的構造次序是由基類到派生類,所以在建構函式中呼叫虛函式,這個虛函式不會呈現出多型; 相反,類的析構是從派生類到基類,當呼叫繼承層次中某一層次的類的析構函式時往往意味著其派生類部分已經析構掉,所以也不會呈現出多型

c、靜態函式不可以是虛函式

因為靜態成員函式沒有this,也就沒有存放vptr的地方,同時其函式的指標存放也不同於一般的成員函式,其無法成為乙個物件的虛函式的指標以實現由此帶來的動態機制。靜態是編譯時期就必須確定的,虛函式是執行時期確定的。

d、虛函式可以宣告為inline

inline函式和virtual函式有著本質的區別,inline函式是在程式被編譯時就展開,在函式呼叫處用整個函式體去替換,而virtual函式是在執行期才能夠確定如何去呼叫的,因而inline函式體現的是一種編譯期機制,virtual函式體現的是一種執行期機制。

因此,內聯函式是個靜態行為,而虛函式是個動態行為,他們之間是有矛盾的。

函式的inline屬性是在編譯時確定的, 然而,virtual的性質則是在執行時確定的,這兩個不能同時存在,只能有乙個選擇,檔案中宣告inline關鍵字只是對編譯器的建議,編譯器是否採納是編譯器的事情。

我並不否認虛函式也同樣可以用inline來修飾,但你必須使用物件來呼叫,因為物件是沒有所謂多型的,多型只面向行為或者方法,但是c++編譯器,無法保證乙個內聯的虛函式只會被物件呼叫,所以一般來說,編譯器將會忽略掉所有的虛函式的內聯屬性。

相關知識點:什麼函式不能宣告為虛函式?

乙個類中將所有的成員函式都盡可能地設定為虛函式總是有益的。 

設定虛函式須注意: 

1:只有類的成員函式才能說明為虛函式; 

2:靜態成員函式不能是虛函式; 

3:內聯函式不能為虛函式; 

4:建構函式不能是虛函式; 

5:析構函式可以是虛函式,而且通常宣告為虛函式。

函式說明python函式巢狀筆記 函式說明

ps 今天上午,非常鬱悶,有很多簡單基礎的問題搞得我有些迷茫,哎,幾天不寫就忘。目前又不當coo,還是得用心記 哦!關於函式內嵌函式作用域的條記 def test i 0defa print locals a printi test 這段,locals 的值為空,說明內嵌的a函式沒有認默引入i de...

CFile Open函式說明

1 nopenflags cfile modecreate 建立乙個新的檔案,如果檔案存在將檔案擷取成長度為0。cfile modenotruncate 此標誌總是與modecreate 配合使用,如果檔案存在,不將檔案擷取成長度為0 如果檔案不存在即建立新檔案。這個功能往往很好用,比如說,當你需要...

signal函式說明

c traps and pitfalls 對signal函式解釋得非常詳細。中void signal int sig,void handler int int int p 這是乙個函式指標,p所指向的函式是乙個不帶任何引數,並且返回值為int的乙個函式.int fun 這個式子與上面式子的區別在於用...