關於c 中的覆蓋,過載,隱藏

2021-09-12 14:31:40 字數 773 閱讀 6903

1,成員函式覆蓋(override,也稱重寫)

是指派生類覆蓋基類的虛函式(此時基類的虛函式被派生類的虛函式覆蓋,不可以再用)

特徵如下:

a,不同的作用域(兩個函式分別位於派生類與基類)

b,函式名字相同

c,基類函式必須有virtual關鍵字,不能有static

d,返回值相同

e,引數相同

f,重寫函式的許可權訪問限定符可以不同

(2)成員函式的過載問題(overload)

是指函式名相同,引數不同(數量,型別),此時根據引數不同進行呼叫。

特徵如下:

a,相同的範圍(在同乙個作用域中,即在同乙個類中,比如都在基類或者都在派生類中)

b,函式名字相同

c,引數不同(引數數量,型別)

d,virtual關鍵字可有可無

e,返回值可以不同

(3)成員函式的隱藏規則

這是一種沒有嚴格按照過載和重寫規則編寫函式的錯誤狀態,程式設計盡量不要出現這種錯誤狀態,因為會出現一些編譯問題

隱藏規則的出現在以下情況:這裡「隱藏」是指派生類的函式遮蔽了與其同名的基類函式

a,如果派生類的函式與基類的函式同名,但是引數不同。

此時,無論有無virtual關鍵字,基類的函式將被隱藏(注意不要將其和過載混淆);但是同名的基類函式仍然存在,仍然可以被呼叫。

b,如果派生類函式與基類的函式同名並且引數還相同,但是基類函式沒有virtual關鍵字。此時,基類的函式被隱藏(注意不要和覆蓋混淆);但是,同名的基類函式仍然存在,仍然可以被呼叫。

關於C 中的過載,覆蓋和隱藏

關於第八章中的 c 中的過載,覆蓋和隱藏 有一點沒看明白,貼上來,希望有高手指點.原文 如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual關鍵字。此時,基類的函式被隱藏 關於這句話,書上的例子如下 include class base void g float x vo...

c 過載 覆蓋 隱藏

成員函式的過載 覆蓋與隱藏 成員函式的過載 覆蓋 override 與隱藏很容易混淆,c 程式設計師必須要搞清楚 概念,否則錯誤將防不勝防。8.2.1 過載與覆蓋 成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋是指派生類函...

c 過載 覆蓋 隱藏

成員函式的過載 覆蓋與隱藏 成員函式的過載 覆蓋 override 與隱藏很容易混淆,c 程式設計師必須要搞清楚 概念,否則錯誤將防不勝防。8.2.1 過載與覆蓋 成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋是指派生類函...