C++的類型轉(zhuǎn)換分為隱式轉(zhuǎn)換和顯式轉(zhuǎn)換
隱式轉(zhuǎn)換舉例:
int i=4;
double ?d=i;//隱式轉(zhuǎn)換
顯式轉(zhuǎn)換分為四種:reinterpret_cast,static_cast,const_cast,dynamic_cast
一谋右、reinterpret_cast
主要用途:指針重新解釋赖临,可以用于簡單類型指針之間浅乔、無繼承關(guān)系的類指針,也可以將指針解釋為簡單類型。
例如:
1烛占、簡單類型指針之間轉(zhuǎn)換
int i=0;
int *pi = &i;
double *pd = reinterpret_cast<double *> (pi);
2砂缩、無繼承關(guān)系的類指針之間
classA ?cA = new classA();
classA *pcA = &cA;
classB *pcB = reinterpret_cast<classB *> (pcA);
3、指針解釋為簡單類型
long ?ld = reinterpret_cast<long > pi;
二焙压、static_cast
主要用途:簡單類型轉(zhuǎn)換鸿脓,具有繼承關(guān)系的對象之間轉(zhuǎn)換
1、簡單類型轉(zhuǎn)換
long ld=10;
int i =static_cast<int> (ld);
2涯曲、具有繼承關(guān)系的對象之間轉(zhuǎn)換
class A{};
class B:public A{};
B b;
A a = static_cast<A> (b);
三野哭、const_cast
主要用途:去掉/增加指針變量的const屬性
四、dynamic_cast
主要用途:用于運行時類型檢查幻件,比如一個用基類指針或引用表示的對象拨黔,有可能是基類對象,也有可能是繼承類對象绰沥,通過dynamic_cast進行轉(zhuǎn)換篱蝇,根據(jù)轉(zhuǎn)換結(jié)果可判斷實際類型,然后再進行進一步操作徽曲。