C 中建構函式建立物件

2021-07-11 13:19:07 字數 1246 閱讀 4219

1、 c++中建構函式的呼叫方式主要分為兩類:

1)顯示呼叫:

eg: stock food = stock("360",250,2.5);

2)隱式呼叫;

eg:stock food("360",250,2.5);

注意:顯示呼叫建構函式大多編譯器理解為對food進行初始化,這也是最正確的理解方式,因此直道food所在的作用域到達盡頭,才呼叫析構函式進行清理;而有的編譯器將

stock food = stock("360",250,2.5;理解為:先建立一臨時物件,然後將其賦值給food,然後在刪除臨時物件。如果是這樣,則會呼叫一次析構函式,對物件進行清理。這種建立方式和

food = stock("360",250,2.5比較相似,即對food進行復位。

c++11新標準,增添了物件的列表初始化:

eg:stock food = ;

eg:stock food ;

2、 預設建構函式:

預設建構函式分為三類:

1)宣告類時,程式設計師不宣告任何建構函式,則編譯器為該類增添一不含任何引數的建構函式,該建構函式也不對該類的任何成員變數進行初始化,即:成員變數的值未被初始化。

2) 宣告類時,程式設計師宣告乙個不含引數的建構函式,該建構函式可以對類成員變數進行預設初始化;

3)宣告類時,程式設計師宣告乙個含預設引數的建構函式,那麼定義物件時成員變數將被預設引數初始化;

注意:只有在程式設計師不宣告任何建構函式的情況下,編譯器才會為類增添乙個不含任何引數的預設建構函式,如果程式設計師偷懶,定義物件時:stock food;則編譯器將報錯,

因此為了編譯成功,程式設計師最好為類增添乙個隱式初始化的

預設建構函式。

若新增兩個預設建構函式,則在呼叫預設建構函式初始化物件時會出錯,編譯器不知道呼叫哪乙個。

3、預設建構函式的呼叫:

eg: stack food;

eg: stack food();//

典型錯誤方法

eg:stack food = stack();

預設建構函式寫法最簡單,因此程式設計師最好為類增添乙個預設建構函式啊!

4、複製建構函式

當時用乙個物件類初始化另乙個物件時,編譯器將自動生成複製建構函式。該函式將生成乙個副本物件,並將該副本物件中的非靜態資料成員拷貝給要初始化的物件,因此,忽視了對靜態成員的處理,容易引發難以檢查的錯誤。

eg: stock food = stock("360",250,2.5);

將呼叫複製建構函式,對food進行複製初始化。

C 建構函式 建立物件

建構函式 constructor 用於執行類的例項的初始化。每個類都有建構函式。c 中通過new關鍵字建立物件的過程其實就是通過new關鍵字呼叫類的建構函式的過程。建立物件時,必須呼叫建構函式,如果沒有定義建構函式,系統會提供乙個預設的建構函式。在訪問乙個類的時候,系統將最先執行建構函式中的語句,任...

建構函式建立物件

字面量方式 new 關鍵字 借用建構函式 在記憶體中建立乙個新的空物件。讓 this 指向這個新的物件。執行建構函式裡面的 給這個新物件新增屬性和方法。返回這個新物件 建構函式裡面不需要 return 例項成員 建構函式內部通過this新增的成員,例項成員只能通過例項化的物件來訪問 靜態成員 在建構...

建構函式建立物件

建構函式建立物件 function box name,age 建構函式沒有new object,但是它後台會自動var obj new object this就相當於obj 建構函式不需要返回物件引用,它是後台自動返回的 建構函式也是函式,但函式名第乙個字母要大寫 必須new建構函式名 new bo...