2010-12-21 207 views
0

可能重複:
C++: What's the difference between function(myVar) and (function)myVar ?int(floatvar)和(int)floatvar之間是否有區別?

我所看到的和所使用的類型轉換,這些兩個變種:

int(floatvar) 

(int)floatvar 

是兩者之間有什麼區別?有什麼關於何時使用哪些偏好?

+0

我刪除了C標籤,因爲這是一個C++唯一的問題。除非你想用參數「floatvar」調用一個名爲「int」的函數,否則第一個變體在C中是不相關的? – onemasse 2010-12-21 09:58:44

回答

9

他們之間沒有區別。 (int)floatvar是C做的方法,其中int(floatvar)是C++的方法(儘管最好是明確的並使用static_cast<>)。

+1

讀者可能會感興趣的是要注意爲什麼它被引入。 – 2010-12-21 10:03:40

3

不,這是一回事。

無論如何,對於C++鑄造static_cast是優選的。

1

符號是任何類型的通用符號,事實上,您可以使用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組的元素。

相關問題