1. 程式人生 > >型別轉換_static_cast和reinterpret_cast

型別轉換_static_cast和reinterpret_cast

傳智掃地僧課程學習筆記。

/*
C風格的強制型別轉換(Type Cast)很簡單,不管什麼型別的轉換統統是:
	TYPE b = (TYPE)a   
	C++風格的型別轉換提供了4種類型轉換操作符來應對不同場合的應用。
	  static_cast		靜態型別轉換。如int轉換成char
		reinterpreter_cast	重新解釋型別 
		dynamic_cast		命名上理解是動態型別轉換。如子類和父類之間的多型型別轉換。
		const_cast,		字面上理解就是去const屬性。
		4種類型轉換的格式:
			TYPE B = static_cast<TYPE> (a)  
*/
	double dpi = 3.1415926;
	int num  = dpi;//隱式型別轉換
	int num1 = (int)dpi;//C型別轉換	
	int num2 = static_cast<int>(dpi);//能做隱式的,靜態一般都行,如果有錯誤會提示
	
	char *p1 = "hello ...itcast";
	int  *p2 = NULL;
	//p2 = static_cast<int *>(p1);//error
	p2 = reinterpret_cast<int *>(p1);//有強制型別轉換的味道,
	cout<< p1<<endl;//%s 打印出來的是字串
	cout<< p2<<endl;//%d 打印出來的是地址