- const_cast:用于將const變數轉換為非const變數
int n = 5; int *k1 = const_cast<int*>(&n); //指標 *k1 = 1; int &k2 = const_cast<int&>(n); //參考 k2 = 2;
const int a = 10; int* b = const_cast<int*>(&a); *b = 11;//指標b的屬性變成可讀可寫
2. static cast:有兩個作用,分別是代替隱式轉換和基類派生類之間的轉換
2.1)隱式轉換:
int n = 10; char c = 'a'; void *p = nullptr; int *k = static_cast<int*>(p); n = static_cast<int>(c); //n就變成了97,ASCLL碼中字符a的位置, 相當于int n = (int)c;
2.2)基類派生類之間的轉換:派生類轉換為基類是安全的,但反之不安全,因為派生類拓展了許多其他的方法,static_cast不提供安全檢查,
3. dynamic_cast:主要用于基類派生類之間的轉換,提供安全檢查,并且通常情況下基類應該含有虛函式,
注意:主要可以分為兩種:指標型別的dynamic_cast和參考型別的dynamic_cast型別轉換,如果轉換失敗的話,指標型別會回傳0,而參考型別會回傳bad_cast,
4. reinterpret_cast:幾乎什么都可以轉,比如將int轉指標,可能會出問題,盡量少用,
參考:
1. https://www.nowcoder.com/tutorial/93/a34ed23d58b84da3a707c70371f59c21 牛客網C++面試寶典第2章第1小節,
2. https://www.cnblogs.com/-citywall123/p/13514067.html C++四種cast強制型別轉換,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/259921.html
標籤:其他
