C 虛函式的宣告和定義

2021-10-04 03:12:00 字數 708 閱讀 4554

多型(polymorphism)是物件導向程式設計最重要的特性之一。c++ 通過結合虛函式和指標(引用)來實現多型。作為 c++ 使用者,你當然知道如何將虛函式和指標(引用)結合起來以實現多型。但在這些概念之間,可能還存在些許模糊地細節問題。

根據 c++ 標準,虛成員函式應在類內定義宣告,且必須有定義(實現)。注意,在類外定義實現虛成員函式時,不能再加 virtual 關鍵字。

struct foo };

struct bar

;void bar::

bar(

)

不過,c++ 標準沒有要求必須在編譯期對這條規則進行診斷。也就是說,如果沒有給出虛成員函式的實現,編譯器可能不會報錯。不過,鏈結器可能會提示引用了未定義的符號這樣的錯誤。

純虛函式可以有定義,並且有時我們必須給出純虛函式的定義。不過有一點需要注意:和其它成員函式不同,純虛函式的定義必須實現在類外定義。類外定義也是不需要加virtual關鍵字的。

對於純虛函式,我們可以:

struct abstract };

// definition of the pure virtual function

void abstract::

fun(

)struct concrete : abstract

~concrete()

};

C 函式的宣告和定義

在上一節,我們已經學會了如何閱讀函式原型和如何呼叫乙個函式。然而,僅靠系統給出的標準庫函式是不夠用的。我們有時候要根據我們的實際要求,寫出乙個合適自己使用的函式。那麼,我們如何來自己動手編寫乙個函式呢?首先,我們要告訴電腦,我們自己編寫了乙個函式,即這個函式是存在的,這叫作函式的宣告 declara...

C 變數和函式的宣告和定義

有一部分c 程式設計師對於多個原始檔一起編譯鏈結時,變數,函式或者類宣告和實現到底如何定義模糊不清,現在分類澄清一下。變數 variable 在c 中,變數宣告 declaration 只有在使用extern關鍵字時才成立,其他情況下都是定義 definition 而在使用extern的同時給變數賦...

C 變數和函式的宣告和定義

有一部分c 程式設計師對於多個原始檔一起編譯鏈結時,變數,函式或者類宣告和實現到底如何定義模糊不清,現在分類澄清一下。變數 variable 在c 中,變數宣告 declaration 只有在使用extern關鍵字時才成立,其他情況下都是定義 definition 而在使用extern的同時給變數賦...