c 知識總結 6

2021-08-06 01:22:51 字數 915 閱讀 4608

基類通過在其成員函式的宣告語句之前加上關鍵字virtual是的該函式執行動態繫結。任何建構函式之外的非靜態函式都可以是虛函式。關鍵字virtual只能出現在類內部的宣告語句而不能用於類外部的函式定義。如果基類把乙個函式宣告成虛函式,則該函式在派生類中隱式地也是虛函式。

靜態型別與動態型別

表示式的靜態型別在編譯時總是已知的。它是變數宣告時的型別或表示式生成的型別;動態型別則是變數或表示式表示的記憶體中的物件的型別。動態型別直到執行時才可知。

不存在從基類向派生類的隱式型別轉換

如果再基類含有乙個或多個虛函式,我們可以使用dynamic_cast請求乙個型別轉換,該轉換的安全檢查將在執行時執行。同樣,如果我們已知某個基類向派生類的轉換是安全的,則我們可以使用static_cast來強制覆蓋掉編譯器的檢查工作。

在物件之間不存在型別轉換

當我們給基類的建構函式傳遞乙個派生類物件時,實際執行的建構函式時基類中定義的那個,顯然該建構函式只能處理基類自己的成員。類似的,如果我們將乙個派生類物件賦值給乙個基類物件,則實際執行賦值運算子也是基類定義的那個,該運算子同樣只能處理基類自己的成員。

含有純虛函式的類是抽象基類

含有(或者未經覆蓋直接繼承)純虛函式的類是抽象基類。抽象基類負責定義介面,而後的其他類可以覆蓋介面。我們不能(直接)建立乙個抽象基類的物件。

受保護的成員

1.和私有成員類似,受保護的成員對於類的使用者來說是不可訪問的。

2.和公有成員類似,受保護的成員對於派生類的成員和友元來說是可訪問的。此外,protected還有另外一條重要的性質。

3.派生類的成員或友元只能通過派生類物件來訪問基類的受保護成員。派生類對於乙個基類物件中的受保護成員沒有任何訪問特權。

C 知識總結(6)

extern可以置於變數或者函式前,以標示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。此外extern也可用來進行鏈結指定。27 const關鍵字的作用?適用場合?使用注意事項?1 在c語言中用const去修飾乙個變數,表示這個變數是唯讀的,不可通過顯式的呼叫...

c 知識總結

第一章節 1.類的兩種定義形式 1 在類中定義成員函式 2 在類之後定義成員函式 2.class 和struct的區別 1 c的struct沒有方法,而c 的struct可以有方法 函式 2 c的struct的成員沒有訪問許可權,c 的class則有,且預設許可權私有 3 c的struct並不能為空...

C 知識總結

c 總結 一丶運算子過載 1丶基本概念 將運算子看作是一種特殊的函式 運算元是函式的引數,運算結果是函式的返回值 2丶運算子函式 定義過載運算子和定義普通函式類似 函式名由關鍵字operator 和其後要定義的運算子組成 operator operator operator 返回型別 運算結果的型別...