C 之建構函式

2021-05-26 18:57:30 字數 966 閱讀 7914

參考《c#程式設計指南》

類是否用 static 來修飾,有兩種,一種是用static修飾,一種則不是。

對於前者,如果,類提供了乙個無引數的建構函式,那麼new 例項化物件時候,就會呼叫這個無引數的建構函式(也叫預設建構函式)

,如果,類提供了乙個有引數的建構函式,但是new時候,依然沒有提供引數,那麼情況是怎麼樣? 顯然,是呼叫系統提供的乙個建構函式。

綜上, new例項化物件,不提引數,則呼叫預設建構函式。那麼對於c++,是否成立? 也是成立的。

做個試驗:

class person

public person(int age, int ***)

以下是呼叫**:

person person = new person();

person person2 = new person(23, 1);

結果為:

呼叫了person()

呼叫了有引數的建構函式

現在再做個試驗,把我提供的預設建構函式注視掉,看結果是什麼?

接著,在此基礎上,把有引數的建構函式注視掉,看結果如何?

是可以通過的,!!!!!!!

「類提供了乙個有引數的建構函式,但是new時候,依然沒有提供引數,那麼情況是怎麼樣? 顯然,是呼叫系統提供的乙個建構函式。」

這一話是有問題的!!!  如果你的類提供了乙個有引數的建構函式,那麼請你也提供乙個無引數的建構函式(預設建構函式),

否則,用new例項化物件時(必須帶引數)。

另外:如果乙個建構函式都不提供,那麼是會呼叫系統提供的。

那麼結構體呢? 有了類,為什麼要用結構體?  記那麼多語法,很煩人。。。。。。。。。

另外:自己提供的建構函式,如果沒有初始化類中的資料,那麼會被用預設的值來初始化,比如:int :0  ,string :null .

建議不要這樣, 另外,如果涉及到聚合的時候,類中包含了另外乙個物件,那麼這樣會很麻煩。編譯器就不知道該提供預設值了。

C 建構函式之預設建構函式

參考部落格 以下內容是在上述博主的部落格中提煉出來的 一 預設建構函式的含義是啥 主要就是 預設建構函式在呼叫的時候不需要顯示傳入實參的建構函式 二 預設的建構函式的分類 1 無參建構函式 就是沒有引數的建構函式 class sample 2 帶有形參,並且帶有預設值的建構函式 class samp...

C 建構函式之委託建構函式

委託建構函式 c 11新標準擴充套件了建構函式初始值的功能,使得我們可以定義所謂的委託建構函式。乙個委託建構函式使用它所屬類的其他建構函式執行它自己的初始化過程,或者說它把它自己的一些 或者全部 職責委託給了其他建構函式。和其他建構函式一樣,乙個委託建構函式也有乙個成員初始值的列表和乙個函式體。在委...

C 之建構函式

建構函式的作用是初始化物件的資料成員。1 無引數建構函式 如果建立乙個類你沒有寫任何建構函式,則系統會自動生成預設的無參建構函式,函式為空,什麼都不做。只要你寫了某一種建構函式,系統就不會再自動生成這樣乙個預設的建構函式,如果希望有乙個這樣的無參建構函式,則需要自己顯式地寫出來。2 一般建構函式 一...