先看如下代碼
char a = 'a';
double d = a;
很明顯以上代碼無法編譯通過,因爲a 和 d 是不同的數據類型,如果我們確實有需求將a賦值給d,這時應該怎麼做呢?
這就需要用到類型轉換,就是將 a 的數據類型 轉化爲 double 類型,那麼如何來轉呢?
很簡單,只需要用C++內置函數static_cast()就可以了,具體示例代碼如下
char a = 'a';
double d = static_cast<double>(a);
這裏說明下,static_cast ()中的a ,表示要將a轉化爲<>中的double類型。()中的參數表示待轉化類型,<>中的類型,表示要轉化爲什麼樣的類型。
由static_cast()進行的轉化叫做靜態類型轉換。
除了基本的數據類型轉化之外,還有父類和子類之間的類型轉換,示例如下
我先定義一個父類
class Base{};
再定義個子類
class Child :public Base{};
現在就來進行父類和子類的類型轉換
向下類型轉換(將父類轉化爲子類)
Base * base = NULL;
Child * child = NULL;
//把base轉爲 Child*類型 向下 不安全
Child * child2 = static_cast<Child*>(base);
向上類型轉換(將子類轉化爲父類)
Base * base = NULL;
Child * child = NULL;
//把child 轉爲 Base* 向上 安全
Base * base2 = static_cast<Base*>(child);