簡單的事情:我想「轉換」例如將float
分成double
。現在有知道我有三種方法:在基本類型的情況下顯式類型轉換「運算符」之間是否存在差異?
float v = 4.2f;
double u = (double)v;
double u = double(v);
double u = static_cast<double>(v);
double u(v);
編輯:只是想過這個作爲第四個選項!
這些是相同還是有細微差別?你有什麼建議使用?
請注意,這個問題只與int,char,float等基本類型有關,不涉及指針,POD或類。
查看http://stackoverflow.com/questions/28002/regular-cast-vs-static-cast-vs-dynamic-cast/1255015#1255015 – icecrime 2010-11-16 13:55:13
@icecrime:你的鏈接處理指向多態類的轉換 - 不是基本類型。 – Danvil 2010-11-17 12:52:22
'double'='double d = f;'會自動轉換成'double'。不用擔心。一個失去精度的轉換必須更謹慎地處理,我想這取決於具體的應用。在句法上,我會推薦'static_cast',因爲它稍後允許您搜索'_cast'來查找所有的演員。 – 2010-12-02 14:22:19