C 關於方法的隱藏和過載的比較

2021-04-18 03:09:37 字數 995 閱讀 1411

//c#中虛方法用virtual修飾,是子類中的方法重寫了父類的方法(此時,父類中的方法和基類的方法是同乙個版本);

//針對虛方法virtual,使用過載override;作用主要體現在多型上(同乙個操作move()取決於不同類的例項有不同的執行結果)

//c#中非虛方法,如果在子類中定義了同名的方法則預設隱藏了父類中的非虛方法,此時子類中實際存在兩個版本的方法且名字相同;

//這種情況只在繼承類(子類)中存在,在子類中預設優先使用新版本的方法,舊版本方法被隱藏了

//而且多層繼承過程中的子類new產生的新版本,是就近繼承,除非父類是private型別的就跳級繼承

//c#的隱藏和重寫的確是有區別的,只有在反覆改寫程式並檢視結果的不同才有深的體會,光看書和例子入門時很暈...

//過載:存在編譯期的過載(普通方法的過載,編譯器自動根據方法的簽名不同而不同);和執行期的過載;

using system;

namespace zoo

public virtual void eat()    //虛方法

}public class horse : animal//馬繼承自動物類

set           

}private new void move()   //非虛方法

public void showskincolor()

public override void eat()   //重寫虛方法eat(覆蓋),在子類中重寫從父類繼承下來的成員方法

public class zebra : horse//斑馬繼承自馬類

public new void move()   //子類中定義--父類中存在的成員,隱藏了父類中的成員

//此處的move方法,預設繼承就近的父類;如果就近的父類同名方法是private就跳級繼承

public override void eat()   //重寫虛方法eat(覆蓋),在子類中重寫從父類繼承下來的成員方法

}public class demo}}

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

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

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

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

C 的隱藏 重寫 過載和資訊隱藏

賢哲所追求的不是享樂,而是源於痛苦的自由。面試過程中有被問到隱藏的概念。把隱藏答成類的資訊隱藏了,今天被乙個好心的面試官指出來,這裡重新學習一下。include include include using namespace std 過載 1.函式的可見範圍相同。不同cpp檔案的同名函式不構成過載。...