推 QQ29:謝謝你 那我想藉此問一下 C-style強轉和C++的static_cast 10/13 11:38
→ QQ29:差別在哪裡呀 因為我對static_cast的能力一直不是很清楚 10/13 11:39
→ QQ29:C-style轉型似乎是無敵寫對type compile都不會error 10/13 11:40
→ QQ29:static_cast好像就不是這樣 爬文好像也沒特別討論...謝謝 10/13 11:40
推 tyc5116:書上寫,一個是強轉,但是是用哪種方式轉型不得而知 10/13 12:48
→ tyc5116:static_cast則指明了是用靜態轉型~ 10/13 12:49
推 QQ29:但是有什麼限制呢? 所謂靜態是指什麼@@ 10/13 14:03
→ QQ29:我會這樣問是常看到的都是合理的轉型用static_cast... 10/13 14:10
→ QQ29:但不知道他和其他三種c++轉型法 尤其是reinterpret cast差異 10/13 14:11
推 tyc5116:static似乎不能作指標的轉換,要用reinterpret的樣子 10/13 15:17
推 QQ29:假如我寫float *f; int *p=static_cast<void*>(f); 10/13 15:27
→ QQ29:compile就直接有error 這就是static_cast要達到的目的嘛? 10/13 15:27
→ QQ29:如果要強轉c++就必須要用reinterpret?? 10/13 15:27
推 tyc5116:(以下是猜的),應該是,強轉有時候在compile的時候會過,但是 10/13 15:32
→ tyc5116:在執行的時候才顯示出錯誤(忘了是啥錯誤訊息了,有過遇一次 10/13 15:33
推 QQ29:我好像打錯了改成int *p = static_cast<int*> ( f ); 10/13 15:37
→ QQ29:這樣不給過@@ 用void*可給過 實在不懂static_cast用意 10/13 15:38
→ QQ29:只是希望compile時能夠讓避免無腦的c style轉型讓程式壞嘛? 10/13 15:38
推 tyc5116:因為void*本身就定義成可轉成所有型態的指標啊 10/13 15:51
→ tyc5116:所以才會例外吧...當然還是我猜的啦....XD 10/13 15:52
推 QQ29:嗯是~~只是我想知道static的能力跟他的用法 在哪邊必須用他@@ 10/13 15:55
推 littleshan:請看 Effective C++ 10/13 17:21