2013-01-24 136 views

回答

5

前者是C++,它通過調用構造函數來做direct initialization

第二個是C(或C++),它正在進行強制轉換。

所以,從C程序員的角度來看有很多不同。

此外,這是一個非常糟糕的主意,因爲size_t是一個無符號類型。這應該使用ssize_t完成,該簽名已被簽名並且不需要演員。

+0

有很多情況需要(size_t)-1。 –

+1

-1「它正在做直接初始化」;不,它不是,這仍然是一個複製初始化。直接初始化是例如'size_t x(-1)'。另外,'ssize_t'不是標準的C或C++類型,它是一個Posix類型。在32位系統及更高版本中,對應於size_t的簽名類型實際上是ptrdiff_t。無論如何,這是推薦用於您推薦Posix特定類型的目的的類型。第三,兩者都是強制轉換,並且C++符號轉換的效果被定義爲等同於C符號轉換。 –

2

在C中,只有其中一個是有效的表達式。

在C++中,它們是完全一樣的,它們是兩種可供選擇的形式:顯式轉換表達式:C風格和functional style

+0

+1是正確的 –

+0

感謝Cubbi的反饋。你是對的 。 – user1983474

相關問題