1. 程式人生 > >型別轉換詳解(二)

型別轉換詳解(二)

C++型別轉換

C++轉換的物件可分為: 1;基礎資料型別

2; 指標型別

3; 類物件

  • const_cast
    1. 指標 引用 或者物件指標

    2. 增加或去除變數的const性


void test(){
	int a=1;
	const int& b=a;
	int& c=const_cast<int&>(b);  
	c=2;	
}

const int*p =NULL;
int* p2=const_cast<int*> (p);

int* p3=NULL;
const int* p4=const_cast<const int
*>(p3);
  • reinterpret_cast 1;強制型別轉換

(1) 指標型別轉換 可以是無關的指標 (2) 函式指標


class no{
	//nothing
};

class change{
	//nothing
};

void test1(){
	//
	no* n1=NULL;
	change* ch=reinterpret_cast<change* >(n1);
} 
//
typedef void(*func1)(int,int);
typedef void(*func2)(int,char*);

void test2(){
	func1 pointer1;
func2 pointer2=reinterpret_cast<func2>(pointer1); }

對於型別轉換;

  1. 使用應該知道要轉換的變數,轉換前是什麼型別,轉換後是什麼型別,以及轉換後可能會產生什麼後果
  2. 一般情況下,不建議使用型別轉化,避免進行型別轉換