C 函式中那些不可以被宣告為虛函式的函式

2021-09-13 16:31:30 字數 629 閱讀 1611

1、頂層函式(普通函式):多型的執行期行為體現在虛函式上,虛函式通過繼承方式來體現出多型作用,頂層函式不屬於成員函式,是不能被繼承的。

2、建構函式:(1)建構函式不能被繼承,因而不能宣告為virtual函式。

(2)反證法:呼叫建構函式後才能生成乙個物件。假設建構函式是虛函式,那麼它存在於虛函式表中,那麼建立乙個物件就需要而找到虛函式表去呼叫建構函式。這就需要去找到虛函式指標,而虛函式指標又存在於物件中。但是現在都沒有物件,**會有虛函式指標呢?如下例:

#include using namespace std;  

class b

virtual void show()

3.static函式:不能被繼承,只屬於該類。

4、友元函式:友元函式不屬於類的成員函式,不能被繼承。

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

參考:

C 函式中那些不可以被宣告為虛函式的函式

常見的不不能宣告為虛函式的有 普通函式 非成員函式 靜態成員函式 內聯成員函式 建構函式 友元函式。1 為什麼c 不支援普通函式為虛函式?普通函式 非成員函式 只能被overload,不能被override,宣告為虛函式也沒有什麼意思,因此編譯器會在編譯時邦定函式。2 為什麼c 不支援建構函式為虛函...

那些函式可以設為虛函式,那些函式不可以?

c 中的虛函式的作用主要是實現了多型的機制,關於多型,簡而言之就是用父型別別的指標指向其子類的例項,然後通過父類的指標呼叫實際子類的成員函式。2 必須依賴物件呼叫 可以設定為虛函式的 析構函式 普通的成員函式 不可以設定為虛函式的 普通函式 與類無關,連物件都不存在,物件不存在實現多型是不可能的。普...

C 函式中不可被宣告為虛函式的函式

常見的不不能宣告為虛函式的有 普通函式 非成員函式 靜態成員函式 內聯成員函式 建構函式 友元函式。1 為什麼c 不支援普通函式為虛函式?普通函式 非成員函式 只能被overload,不能被override,宣告為虛函式也沒有什麼意思,因此編譯器會在編譯時邦定函式。2 為什麼c 不支援建構函式為虛函...