2010-11-12 41 views
3

可能重複:
Is there any difference between type casting & type conversion?* cast *和* conversion *的含義是什麼?

我個人使用的術語轉換互換。那是對的嗎?如果不是,有什麼區別?

+0

嚴格而言,它們並不一樣。但人們總是這樣做。 – 2010-11-12 17:43:40

+0

這是一個由coppro答覆的問題。 – 2010-11-12 17:45:32

+2

請參閱http://stackoverflow.com/questions/1374325/is-there-any-difference-between-type-casting-type-conversion – 2010-11-12 18:07:23

回答

3

轉換需要類型A的結構從不同類型B.

鑄造的一個實例需要使用一個或另一個五花八門C++的轉換運算,或C樣式轉換的。

0

轉換意味着獲取特定類型的值並執行某個函數以提供另一種類型的表示。演員只是說「假設這個數據是這種新類型」。有些演員會隱含導致轉換,所以我認爲這是可以互換的。

+0

雖然Casting可以導致轉換髮生,但這不僅僅是假設數據是新類型的問題。在上面給出的例子中,23.0在存儲到i之前被轉換爲int。 – 2010-11-12 17:38:36

+0

@sgolodetz - 因此,我最後一句關於某些轉換暗示(編譯器)應該發生轉換。 – jball 2010-11-12 17:43:27

+0

在C和C++的上下文中不正確。 – 2010-11-12 17:46:55

3

我不認爲它們是相同的 - 一次強制轉換會導致編譯器執行顯式轉換,但您也可以進行隱式轉換,例如,

double d = 23; // implicit conversion from int to double 

對戰:

int i = static_cast<int>(23.0); // explicit conversion from double to int 
+0

在C++中存在從'double'到'int'的隱式轉換。 – 2010-11-12 17:39:30

+0

@James:在這種情況下選擇的例子很不好,抱歉。 – 2010-11-12 17:47:38

0

的流延是一種特殊類型的轉換。另一種類型是由atoi和itoa等函數以及串流執行的。還有一種類型是這樣的:

int minutes_to_seconds(int minutes) { return minutes * 60; }