2010-06-16 59 views

回答

12

它是一個初始值設定項(構造函數參數)。新創建的int值將爲0

+6

這是一個初始化程序。但它不是一個構造函數參數。類型'int'沒有構造函數。 – AnT 2010-06-16 19:15:17

+1

@安德烈:你能解釋一下嗎?如果構造函數接受一個參數,那麼它將如何與初始化器區分開來?這兩者之間的實際區別是什麼? – understack 2010-06-16 19:21:43

+6

@understack:「構造函數」是* class *類型中的一個特殊成員函數。非類的類型(如'int')沒有成員函數,當然也沒有構造函數。你在這裏處理的過程叫做* initialization *。初始化是一個不平凡的概念,它對不同類型的定義是不同的。對於類的類型初始化通常(但不總是)意味着構造函數調用。對於非類類型,由於上述原因,初始化被定義爲不包含任何「構造函數」。 – AnT 2010-06-16 19:28:43

7

這意味着你需要一個指向int,併爲int的值爲0

我一旦失去了太久上竟然有人寫new char(10)時,他們的意思new char[10]錯誤。編譯器很好,但它造成了重大的腐敗問題,這是很難發現。這是10多年前的事情,我們現在沒有我們所做的工具。永遠不會忘記它。

-1

對我來說,0意義也有人在說,

我存心想這是0

,而不是在一些「默認值」,這[編輯] 很多情況下也可能是0 在許多調試編譯中將被設置爲0,但在發佈時,編譯通常會是未初始化內存中已經存在的值。

+0

默認值只是「未初始化」,所以不知道會在那裏。大多數實現在給您之前不會初始化原始的,動態分配的內存(除了調試實現,其中一些實現使用標誌值來幫助您追蹤錯誤)。 – 2010-06-16 19:23:27

+0

Ooops,很對,我在想Int和其他類,比如像默認值爲false的bool,讓我分心。 – 2010-06-16 19:40:50

+0

其實,是的,那裏有一個默認值 - 'new int()'將被初始化。它只是未初始化的'new int'。 – 2010-06-17 03:53:08