C++類型轉換

C++的類型轉換分為隱式轉換和顯式轉換

隱式轉換舉例:

int i=4;

double ?d=i;//隱式轉換

顯式轉換分為四種:reinterpret_cast,static_cast,const_cast,dynamic_cast

一、reinterpret_cast

主要用途:指針重新解釋,可以用于簡單類型指針之間、無繼承關系的類指針,也可以將指針解釋為簡單類型。

例如:

1、簡單類型指針之間轉換

int i=0;

int *pi = &i;

double *pd = reinterpret_cast<double *> (pi);

2、無繼承關系的類指針之間

classA ?cA = new classA();

classA *pcA = &cA;

classB *pcB = reinterpret_cast<classB *> (pcA);

3、指針解釋為簡單類型

long ?ld = reinterpret_cast<long > pi;

二、static_cast

主要用途:簡單類型轉換,具有繼承關系的對象之間轉換

1、簡單類型轉換

long ld=10;

int i =static_cast<int> (ld);

2、具有繼承關系的對象之間轉換

class A{};

class B:public A{};

B b;

A a = static_cast<A> (b);

三、const_cast

主要用途:去掉/增加指針變量的const屬性


四、dynamic_cast

主要用途:用于運行時類型檢查,比如一個用基類指針或引用表示的對象,有可能是基類對象,也有可能是繼承類對象,通過dynamic_cast進行轉換,根據轉換結果可判斷實際類型,然后再進行進一步操作。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容