推 bobhsiao:看了頭都暈了......... 05/25 21:40
推 bobhsiao:VS2008 expresss 三行都可以過, 第三行最後漏了 ';' 05/25 21:44
→ bobhsiao:第二行 C 可以過, C++ 過不了 05/25 21:46
→ photon3108:對,第二行,c++ 沒辦法通過編譯器。 05/25 22:00
※ 編輯: photon3108 來自: 118.161.190.106 (05/25 22:00)
推 nowar100:他是要求你要用reinterpret_cast嘛? 05/25 22:14
→ photon3108:gcc 只有說 invalid conversion,沒有提及 r..._cast, 05/25 22:22
→ photon3108:line 2 感覺上好像滿合理的,只是不知錯在哪裡。 05/25 22:23
→ nowar100:其實我比較好奇什麼地方會用到這個 XD 05/25 22:28
推 meltice:懂這個薪水可以拿比較高嗎 05/25 22:29
→ photon3108:實務上我沒有用過,但練習 const 與 pointer 時,對於 05/25 22:29
→ photon3108:line 2 沒辦法編譯過,感覺得相當的意外。 05/25 22:30
推 zerodevil:只能說standard就這樣規定 沒什麼道理@_@ 05/25 22:41
→ avhacker:給樓上,不是沒什麼道理的,可是我又懶得打一堆字.... 05/25 22:45
→ avhacker:你可以想一下為何 float 可轉 int, 但float* 不能轉 int* 05/25 22:47
→ avhacker:或是把 int const * 給 typedef 成別的型別再試試看 05/25 22:48
推 zerodevil:這邊是cv qualifier的問題吧 跟type沒什麼關係 05/25 22:54
→ photon3108:補一個 line 4: int * const * ipcp = ipp; // OK,感 05/25 22:58
→ photon3108:覺是不是與 line 4 的那個特定位置的 const 有關係? 05/25 22:59
推 zerodevil:規定是 如果某處的cv qualifier不同(當然只能多不能少) 05/25 23:01
→ zerodevil:則它右邊的指標全部要加const, 除了最後一個 05/25 23:02
→ avhacker:看你要怎麼解讀囉,把 int* 做個 typede 玩玩就知道了 05/25 23:03
推 zerodevil:不懂樓上的意思@@ 05/25 23:07
→ softwind:icpp是一個pointer, 你可以de-ref兩次 ref到其值 05/25 23:16
→ softwind:如果該值是const, 那麼當然在de-ref過程中 不能改變其值 05/25 23:16
→ softwind:就是說 *icpp 你要得到 const int * const, 05/25 23:17
→ softwind:萬一 *icpp = &other_int;是合法的 這樣const int就沒有 05/25 23:18
→ softwind:意義了, 對client而言更是目瞪口呆 05/25 23:19
→ softwind:const double PI=3.14; const double *pPI=Π 05/25 23:26
→ softwind:void foo( const double ** pp){double db=0; *pp=&db;} 05/25 23:27
推 zerodevil:*icpp = &other_int;這expression本身是合法的啊 05/25 23:30
→ softwind:奇怪 我自己敲的sample是可以的... XD 05/25 23:38
→ softwind:??? 不是吧 你要綁訂const, 中間的deref就要const阿 05/25 23:57