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

2021-04-03 02:34:05 字數 722 閱讀 6902

關於第八章中的"c++中的過載,覆蓋和隱藏"有一點沒看明白,貼上來,希望有高手指點.

原文:如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual關鍵字。此時,基類的函式被隱藏

關於這句話,書上的例子如下:

#include

class base

void g(float x)

void h(float x)

};

class derived : public base

void g(int x)

void h(float x)

};

void main(void)

執行結果:

derived::f(float)3.14

derived::f(float)3.14

base::g(float)3.14

derived::g(int)3

base::h(float)3.14

derived::h(float)3.14

如果把第五行的virtual去掉呢?

base::f(float)3.14

base::g(float)3.14

derived::g(int)3

base::h(float)3.14

derived::h(float)3.14

去掉後基類沒有被隱藏

我不知道我**理解錯了,高手指點.

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

1,成員函式覆蓋 override,也稱重寫 是指派生類覆蓋基類的虛擬函式 此時基類的虛擬函式被派生類的虛擬函式覆蓋,不可以再用 特徵如下 a,不同的作用域 兩個函式分別位於派生類與基類 b,函式名字相同 c,基類函式必須有virtual關鍵字,不能有static d,返回值相同 e,引數相同 f,...

C 中覆蓋,過載和隱藏

include using namespace std struct foo void func int x 那麼,如果不用 using 宣告,拆分後 中的函式 func 不是過載應該是什麼呢?是隱藏 hide 下面是關於過載 覆蓋和隱藏的區別 這幾個概念都有一個共同點 函式名稱相同,所以不免讓人混...

C 過載 覆蓋 和隱藏

這幾個概念都有一個共同點 函式名稱相同,所以不免讓人混淆,大致的區別如下 過載 overload 必須在一個域中,函式名稱相同但是函式引數不同,過載的作用就是同一個函式有不同的行為,因此不是在一個域中的函式是無法構成過載的,這個是過載的重要特徵 覆蓋 override 覆蓋指的是派生類的虛擬函式覆蓋...

C 過載 覆蓋和隱藏

過載 覆蓋和隱藏 共同點 函式名稱相同。1 過載 必須在一個域內,函式名稱相同但是函式引數不同。過載的作用就是同一個函式有不同的行為。過載完全是一個編譯時 或靜態 的概念。如果宣告瞭同名函式,編譯器會在編譯時處理這些同名函式的呼叫問題,確定呼叫哪一個函式,執行時不 涉及呼叫過載函式的額外開銷或決定。...

c 過載 覆蓋和隱藏

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