可能重複:
C++: What's the difference between function(myVar) and (function)myVar ?int(floatvar)和(int)floatvar之間是否有區別?
我所看到的和所使用的類型轉換,這些兩個變種:
int(floatvar)
(int)floatvar
是兩者之間有什麼區別?有什麼關於何時使用哪些偏好?
可能重複:
C++: What's the difference between function(myVar) and (function)myVar ?int(floatvar)和(int)floatvar之間是否有區別?
我所看到的和所使用的類型轉換,這些兩個變種:
int(floatvar)
(int)floatvar
是兩者之間有什麼區別?有什麼關於何時使用哪些偏好?
他們之間沒有區別。 (int)floatvar
是C做的方法,其中int(floatvar)
是C++的方法(儘管最好是明確的並使用static_cast<>
)。
讀者可能會感興趣的是要注意爲什麼它被引入。 – 2010-12-21 10:03:40
不,這是一回事。
無論如何,對於C++鑄造static_cast是優選的。
符號是任何類型的通用符號,事實上,您可以使用int來表示它將在模板中工作。
template < typename T, typename U >
T makeTFromU(U u)
{
return T(u);
}
好的,這是一個非常簡單的情況下,以顯示一個點,但它工作甚至當T爲int和U是可被轉換爲int類型。
標準庫中的一個例子是矢量。如果你使用這個構造函數,它會從參數中構造一個元素,而通過從第一個構造函數構造其他元素。
std::vector<int> v(20, x);
因此它可能會在內部調用INT(X)來創建第一個然後複製到20組的元素。
我刪除了C標籤,因爲這是一個C++唯一的問題。除非你想用參數「floatvar」調用一個名爲「int」的函數,否則第一個變體在C中是不相關的? – onemasse 2010-12-21 09:58:44