古詩詞大全網 - 四字成語 - C++中static_cast和reinterpret_cast的區別

C++中static_cast和reinterpret_cast的區別

1、C++中的static_cast執行非多態的轉換,用於代替C中通常的轉換操作。因此,被做為隱式類型轉換使用。比如:

int i;

float f = 166.7f;

i = static_cast<int>(f);

此時結果,i的值為166。

2、C++中的reinterpret_cast主要是將數據從壹種類型的轉換為另壹種類型。所謂“通常為操作數的位模式提供較低層的重新解釋”也就是說將數據以二進制存在形式的重新解釋。比如:

int i;

char *p = "This is a example.";

i = reinterpret_cast<int>(p);

此時結果,i與p的值是完全相同的。reinterpret_cast的作用是說將指針p的值以二進制(位模式)的方式被解釋為整型,並賦給i,壹個明顯的現象是在轉換前後沒有數位損失。