C++ 數據類型轉換(static_ca…

分類: C++
static_cast 
const_cast 
reinterpret_cast 
dynamic_cast 

1)staic_cast靜態強制; 

不能在無關的指針之間進行static類型強制 
class CAnimal 

//... 
public: 
CAnimal(){} 
}; 

class CGiraffe:public CAnimal 

//... 
public: 
CGiraffe(){} 
}; 

int main(void) 

CAnimal an; 
CGiraffe jean; 

an = static_cast(jean);//將對象jean強制成CAnimal類型 
return 0; 


2、const_cast類型強制 

const_cast類型強制將一個const變量變成一個非const的等價形式 
int main() 

const int j = 99; 
int * k; 

k = const_cast(&j);//解除const 
return 0; 


3、reinterpret_cast運算符 

reinterpret_cast運算符用來將一個類型指針轉變爲另一種類型的指針,也用在將整開型量轉爲指針,或將指針轉爲整型量上; 
int main() 

int j = 10; 
int * ptr = &j; 
char * cptr; 

cptr = reinterpret_cast(ptr);//將int指針類型轉變爲char的指針類型 

return 0; 


4、dynamic_cast運算符 

dynamic_cast的主要目的是: 

1)它返回派生類對象的地址; 
2)它測試基類指針是否指向下一尖括號<>中所指定類型的對象 

dynamic_cast是一個運行時類型信息,dynamic_cast運算符將指向派生對象的基類部分的基類指針轉變爲指向派生對象的派生類指針,dynamic_cast必須嚴格地指定與派生對象相同的類,或者它返回NULL指針; 
class CAnimal 

//... 
}; 
class CGiraffe:public CAnimal 

//... 
}; 
class CGoat:public CAnimal 

//... 
}; 

int main() 

CGiraffe gene; 
CAnimal * aptr = &gene; 
CGiraffe * ptr1,* ptr2; 

ptr1 = dynamic_cast(aptr); 
ptr2 = dynamic_cast(aptr); //return NULL 

return 0; 

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