2011-10-22 59 views
4

當你動態分配char *類型的緩衝區,並希望將其轉換爲一個特定的類型,你應該使用類似的reinterpret_cast <int*>(字符*)與的static_cast <int*>(的static_cast <void*>(字符*)) - 其使用?

reinterpret_cast<int *>(char *) 

或類似

static_cast<int *>(static_cast<void *>(char *)) 

,爲什麼?

我個人很想使用後者,因爲對我來說,這不是對數據的「重新解釋」(而只是一種分配緩衝區的機械方式),它看起來不像是一個bug的來源可能與典型的reinterpret_cast一樣,但這是否是正確的直覺?

+0

你不應該這樣做,因爲它是未定義的行爲。 –

+0

KerrekSB:什麼是「this」指的是? – Mehrdad

+2

@KerrekSB:它的完全定義,甚至用於執行vector(至少在我的sgi版本中)。 – Dani

回答

4

According to Dave Abrahams,使用鏈接static_cast s是強制指針類型的正確標準方法。

就個人而言,我用reinterpret_cast在這些情況下,因爲我從來沒有處理架構,會做一件事與鏈static_cast S和跟單reinterpret_cast不同的事情。

相關問題