C 繼承之建構函式

2022-01-19 00:09:13 字數 915 閱讀 3083

最近發現自己的基礎知識很薄弱,跟朋友交流的時候經常發現很多基礎知識自己是一知半解,似懂非懂。每每這個時候我覺得很有必要去徹底弄懂它,至少應該有個清晰的認識。最近跟乙個朋友討論到c#繼承中建構函式的問題,看**說問題吧。

public

classa}

public

class

b:a}

public

class

apublic

a(string

a) }

public

class

b:a}

跟上面的**差不多,我在a中新增了無參建構函式,然後在b中修改了這句:pubic b():base(){},然後我們測試下,建立乙個b物件,在a類中的2個建構函式中設定斷點,發現無參建構函式執行了,我想正是因為這個base在這裡發揮了作用,是base()指向了父類的無參建構函式。其實,在類b中,我們完全可以省略 base(),也能正常執行,我想,這是系統預設指向了父類的無參建構函式的原因吧,所以也可以省略了,其實大多數時候,我們都是省略不寫的。看到這裡,我想你應該知道第一段**中提示的錯誤的原因了吧,原因是a類中沒有無參的建構函式,這樣在執行b中的建構函式的時候,就沒法執行a中的無參建構函式了。 下面我在寫一段不使用無參建構函式的**,看了會更加清晰:

code

public

classa}

public

class

b:a}

b中的建構函式指定了呼叫父類的a(string a)建構函式。這樣我們建立b物件在執行建構函式前就會執行父類中對應的指定的建構函式了。

第一次寫部落格,憋了很久才寫出來,這些都是自己跟朋友討論出來的,加上**測試跟自己的理解,希望能幫到一些c#的初學者,我想,很多初學者在這裡也肯定很迷惑(也包括我)。如果園子裡的大牛看到了,也希望你們能指點一二,不知道自己描述的是否確切。

C 11之繼承建構函式

1.1.3 using 宣告使用範圍 2.c 11使用using來繼承基類建構函式 3.繼承建構函式可能遇到的問題 當類b繼承於類a的時候,它會繼承類a中的資料成員與普通成員函式。但是某些成員函式是無法被繼承下來的,比如類a 基類 中的合成建構函式 包括構造 析構 拷貝等等 因此,類b在初始化類a的...

C 繼承建構函式和委派建構函式

如果我們在構造b的時候想要擁有a這樣的構造方法的話,就必須乙個乙個的透傳各個介面,那麼這是很麻煩的derived int va base va derived char c base c 改寫成這樣 使用繼承建構函式 using base1 base1 而且,更神奇的是,c 11標準繼承建構函式被設...

C 建構函式 繼承方式

構造方法用來初始化類的物件,與父類的其它成員不同,它不能被子類繼承 子類可以繼承父類所有的成員變數和成員方法,但不繼承父類的構造方法 因此,在建立子類物件時,為了初始化從父類繼承來的資料成員,系統需要呼叫其父類的構造方法。如果沒有顯式的建構函式,編譯器會給乙個預設的建構函式,並且該預設的建構函式僅僅...