抽象類 虛函式 宣告與實現

2022-02-21 11:32:58 字數 663 閱讀 4047

宣告含 virtual

的函式叫虛函式。

宣告為 virtual returntype foo(引數) = 0; 的虛函式叫純虛函式。純虛函式只能宣告,不能實現。

包含至少乙個純虛函式的類叫抽象類(純虛類)。只包含純虛函式的類叫純抽象類(介面)。抽象類不能例項化(當然了,可以定義它的指標)。繼承自抽象類的派生類必須全部實現基類的純虛函式才能例項化,否則該派生類仍是抽象類。

普通成員函式(非virtual)可以只宣告而不定義,當然了必須使用時未呼叫過它。析構函式宣告後必須實現(因為它肯定會被呼叫)。構造,拷貝構造、複製函式可以宣告不實現(必須有一可供使用的建構函式,其他建構函式可只宣告)。

虛函式必須實現,否則編譯出錯。

建構函式不可以是虛函式--見這裡,講的很詳細

析構函式使用多型時基類應宣告為虛函式,否則析構時不會呼叫派生類的析構函式。當然,有的介面(純抽象類)並沒有看到它的虛析構函式,那是因為沒有用到多型,若用到了多型最好宣告實現虛析構函式。注意實現兩字,介面類的虛析構函式要實現。

析構函式可以是純虛函式(派生類此時必須要顯式宣告並實現析構函式):用途,當需要提供乙個空介面時!

虛函式與抽象類

抽象類不是實際存在的類,所以你不能定義乙個抽象類的物件,但是卻可以定義乙個指向抽象類的指標。抽象類僅僅起到了為派生類提供乙個介面的作用,這個介面類的純虛函式可以沒有任何作用,派生類將這些純虛函式繼承過來,然後給予不同的功能,而多型性又保證了使用者在輸入不同的數字時呼叫不同的虛函式。乙個虛函式通過初始...

純虛函式與抽象類

有時我們僅僅想讓基類表示一種抽象的概念,而不與具體的事物相聯絡 如 我在基類中定義乙個多邊形的函式shape 但是我並不想讓它指向某乙個具體的多邊形 三角形呀,四邊形呀 我只想讓它指明多邊形都共有的特徵 都有兩條以上的邊構成,都有角。然後在它的派生類中在對對變形進行具體化 這時便用到了純虛函式 純虛...

純虛函式與抽象類

一 純虛函式 在基類中宣告的虛函式在各派生類中根據實際需要給出各自定義。syntax virtual returntype functionname 參數列 0 宣告為純虛函式後,基類中就可以不再給出函式的實現部分,函式體由派生類給出。在基類中對純虛函式定義的函式體的呼叫,必須通過 基類名 函式名 ...