C 過載 覆蓋和隱藏的區別

2021-05-23 02:20:32 字數 879 閱讀 3840

1、 過載、覆蓋和隱藏的概念

①覆蓋:覆蓋指的是派生類的虛函式覆蓋了基類的同名且引數相同的函式。

②過載:必須在乙個域中,函式名稱相同但是函式引數不同,過載的作用就是同乙個函式有不同的行為,因此不是在乙個域中的函式是無法構成過載的,這是過載的重要特徵。

③隱藏:是派生類的成員函式隱藏了基類函式的成員函式,在呼叫乙個類的成員函式的時候,編譯器會沿著類的繼承鏈逐級向上查詢函式的定義,如果找到了就停止查詢,所以如果乙個派生類和乙個基類都有同乙個同名(暫且不論引數釋放相同)的函式,而編譯器最終選擇了在派生類中的函式,那麼我們就說這個派生類的成員函式「隱藏」了基類的成員函式,也就是說它阻止了編譯器繼續向上查詢函式的定義。

2、 成員函式被過載的特徵

①相同的範圍(在同一類中)

②函式名字相同

③引數不同

④virtual關鍵字可有可無

3、 覆蓋的特徵

①不同的範圍(分別位於派生類與基類)

②函式名字相同

③引數相同

④基類函式必須有virtual關鍵字

4、 「隱藏」的規則

如果派生類的函式與基類的函式同名,但是引數不同。此時,不論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆)。

如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual關鍵字。此時,基類的函式被隱藏(注意別於覆蓋混淆)。

C 過載 覆蓋和隱藏的區別

在同一作用域中函式名相同但引數不同 包括引數型別不同,引數個數不同或二者都不同 的函式稱為過載 overload 函式。void print const char ch void print int a void print int a,int b print hello world 呼叫print...

過載 覆蓋和隱藏區別

a.成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。b.覆蓋是指派生類函式覆蓋基類函式,特徵是 1 不同的範圍 分別位於派生類與基類 2 函式名字相同 3 引數相同 4 基類函式必須有virtual 關鍵字。c.隱藏 是指派生類...

C 過載 覆蓋 隱藏的區別

1 相同的範圍 在同乙個類中 2 函式名相同 3 引數不同 4 virtual關鍵字可有可無 5 與返回值型別無關 1 不同的範圍 基類和派生類中 2 函式名相同 3 引數相同 4 基類函式必須有virtual關鍵字 5 返回值型別必須相同 1 如果派生類的函式與基類的函式同名,但是引數不同。此時,...