C++靜態類型轉換

先看如下代碼

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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章