型別轉換詳解(二)
阿新 • • 發佈:2018-12-19
C++型別轉換
C++轉換的物件可分為: 1;基礎資料型別
2; 指標型別
3; 類物件
- const_cast
-
指標 引用 或者物件指標
-
增加或去除變數的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);
}
對於型別轉換;
- 使用應該知道要轉換的變數,轉換前是什麼型別,轉換後是什麼型別,以及轉換後可能會產生什麼後果
- 一般情況下,不建議使用型別轉化,避免進行型別轉換