覆蓋與隱藏

2021-09-01 02:03:02 字數 985 閱讀 7412

覆蓋是占用了原來的位置,隱藏只是存在找不到

例如:class a{

void fun1(){

int v;

static void fun2(){

int v;

class b extends a{

void fun1(){

int u;

static void fun2(){

int u;

a a=new b();

a.fun1()//呼叫的是b中的fun1因為父類的被覆蓋了不存在了,只有通過特殊手法找到。

a.fun2()//呼叫的是a中的fun2因為fun2只是被b暫時隱藏,還存在。

關於c++類成員函式的過載、覆蓋、隱藏與virtual關鍵字

最近看《高質量c++>>時讀到的關於成員函式的過載/覆蓋/隱藏,把我的一點理解寫出來,希望大家批評與指正.

1. 過載、覆蓋與隱藏

1).過載:成員函式具有以下的特徵時發生「過載」

a.相同的範圍(同乙個類中)

b.函式的名字相同

c.引數型別不同(不能進行隱式型別轉換)

d.virtual關鍵字可有可無

2).覆蓋(也叫「繼承」):指派生類函式覆蓋基類函式,特徵是:

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

b.函式名字相同

c.引數相同

d.基類函式必須有virtual關鍵字

3).隱藏:是指派生類的函式遮蔽了與其同名的基類函式,規則如下:

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

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

我的話費充值店

-各種面額

電信100元**98.60 

聯通100**99.00

移動100**99.30

隱藏與覆蓋

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

覆蓋與隱藏

下面程式的輸出是 class a virtual void fun class b public a void fun int main void a.121434 b.121414 c.121232 d.123434 b首先宣告為a型別的指標指向實際型別為a的物件,呼叫的肯定是a的方法,輸出1 2...

過載 覆蓋與隱藏

一 總結如下表 函式名均相同 引數返回值型別 virtual有無 類別父類子類間 方法為public 繼承為public同同 必須有override同異 有編譯不通過同 均可無hide異均可 無關hide 同一類內同異 無關編譯不通過異 均可無關 overload 二 幾點說明 override 重...