C 基類 派生類指標轉換

2021-06-23 02:01:06 字數 433 閱讀 1395

主要用到static_cast和dynamic_cast

dynamic_cast:

1.dynamic_cast是非常安全的,因為在不行的時候他會返回空指標;

2.在多繼承中,由乙個基類轉換到另乙個基類,只能用dynamic_cast

但是dynamic_cast的使用是有侷限的,也就是基類一定要有虛函式才可以用dynamic_cast,要不然就會出現編譯錯誤。

static_cast:

static_cast在將基類指標轉換為指定的派生類指標時,如果這個物件不是指定的派生類物件,他會返回基類指標,這樣去操作指定的派生類指標,肯定是會出問題的。

dynamic_cast的優點:如果是符合轉換要求的,都會轉換成正確的指標,而不符合轉換要求的會替換為空指標

static_cast的優點:不需要基類函式存在虛函式,使用限定少 

關於基類指標 派生類指標 基類物件派 生類物件問題

1 基類指向派生類的指標 2 派生類指向基類的指標 3 以及將派生類指標強制轉換為基類指標 4 將基類指標強制轉換為派生類指標 無論是基類指向派生類還是派生類指向基類,重點就是哪個類的指標就呼叫哪個類的方法,而輸出的是指標指向的物件。基類指向派生類的指標即將派生類物件賦給基類指標,如果輸出的話,呼叫...

基類指標指向派生類

include class a virtual void vt private void a2 protected void a3 class b public a virtual void vt private void b2 protected void b3 int main 結論 1 對於派...

C 基類指標和派生類指標之間的轉換

函式過載只會發生在同作用域中 或同乙個類中 函式名稱相同,但引數型別或引數個數不同。函式過載不能通過函式的返回型別來區分,因為在函式返回之前我們並不知道函式的返回型別。函式隱藏和函式覆蓋只會發生在基類和派生類之間。函式隱藏是指派生類中函式與基類中的函式同名,但是這個函式在基類中並沒有被定義為虛函式,...