→ james732:()不是會將元素初始化為零嗎 <== 有這回事? 09/06 00:25
→ james732:呃,我用 VC++ 2008 確實都有初始為零 XD 09/06 00:26
→ james732:試了一下,用gcc 4.4.3也會全零,所以問題是....? 09/06 00:29
推 stupid2:看了內文和推文~猜測是compiler的不同的原因(猜測) 09/06 00:31
→ jlovet:這,我沒有()也會是零阿...有定義說()會初始? 09/06 00:40
→ hilorrk:primitive type加()有定義會初始為零吧? 沒有的話是未知數 09/06 00:58
→ hilorrk:所以才能讓template<typename T> foo(T x = T())這種用法 09/06 00:59
→ hilorrk:也適用於primitive type 09/06 00:59
→ jehovah:我是看c++ primer 4/e寫到new內建型別在global初值為0 09/06 01:01
→ jehovah:在scope中則不會初始化, 除非接上空括號() 09/06 01:02
→ jehovah:試過new int()值是0, 但是new int[x]()就無效.. 09/06 01:04
→ hilorrk:我在gcc 4.5中測是會全部初始為零的說... 09/06 01:06
→ hilorrk:你用的compiler是? 09/06 01:09
→ james732:我沒加 () 在VC是垃圾值 在gcc仍然全零 真怪... 09/06 01:13
→ hilorrk:在gcc全零純粹是運氣問題吧~剛好裡面的垃圾是零而已XD 09/06 01:14
→ hilorrk:我用char、int、long、float、double都測過 沒加是垃圾值 09/06 01:15
→ hilorrk:加了全變成零...in gcc 09/06 01:15
推 loveme00835:規格書中的 new expression 並沒有這樣的形式喔~ gcc 09/06 01:35
→ loveme00835:可以應該是額外的擴充吧 09/06 01:35
→ hilorrk:我加上-ansi -pedantic -Wall也都沒有任何error/warning 09/06 01:46
→ hilorrk:而且行為也一樣... 所以我以為是標準規定的XD 09/06 01:46
→ hilorrk:剛看了一下規格書 應該是有這種形式吧? 09/06 02:19
→ hilorrk:new-expression -> new new-type-id new-initializer 09/06 02:20
→ hilorrk:new type-specifier new-declarator new-initializer 09/06 02:21
→ hilorrk:->new type-specifier direct-new-declarator new-initial 09/06 02:23
→ hilorrk:izer 09/06 02:23
→ hilorrk:->new type-specifier [expression]() 09/06 02:23
→ loveme00835:嗯嗯看錯了, 忘記把 new-type-id 給換掉 XD 09/06 02:25
→ hilorrk:嗯嗯 再加上15條的value-initialized 09/06 02:32
→ hilorrk:array的value-initialized是對每個element做value-initial 09/06 02:32
→ hilorrk:而scalar type的value-initialize= zero-initialize=0 09/06 02:33
推 holymars:DevC++內附的Mingw gcc是3.4.2耶= = 麻煩你放棄它好嗎XD 09/06 03:11
推 leicheong:記得VC的debug mode會初始化array為0, release mode 09/06 07:54
→ leicheong:則不會... 09/06 07:55
推 tomap41017:規格書應該是有new[]()的形式喔 @@prime有 10/12 21:17