3.1 static_cast
用法:static_cast < type-id > ( exdivssion )
該運算子把exdivssion轉換為type-id型別,但沒有執行時型別檢查來保證轉換的安全性。它主要有如下幾種用法:
①用於類層次結構中基類和子類之間指標或引用的轉換。
進行上行轉換(把子類的指標或引用轉換成基類表示)是安全的;
進行下行轉換(把基類指標或引用轉換成子類表示)時,由於沒有動態型別檢查,所以是不安全的。
②用於基本資料型別之間的轉換,如把int轉換成char,把int轉換成enum。這種轉換的安全性也要開發人員來保證。
④把任何型別的表示式轉換成void型別。
注意:static_cast不能轉換掉exdivssion的const、volitale、或者__unaligned屬性。
3.2 dynamic_cast
用法:dynamic_cast < type-id > ( exdivssion )
該運算子把exdivssion轉換成type-id型別的物件。Type-id必須是類的指標、類的引用或者void *;
如果type-id是類指標型別,那麼exdivssion也必須是一個指標,如果type-id是一個引用,那麼exdivssion也必須是一個引用。
dynamic_cast主要用於類層次間的上行轉換和下行轉換,還可以用於類之間的交叉轉換。
在類層次間進行上行轉換時,dynamic_cast和static_cast的效果是一樣的;
在進行下行轉換時,dynamic_cast具有型別檢查的功能,比static_cast更安全。
3.1 static_cast
用法:static_cast < type-id > ( exdivssion )
該運算子把exdivssion轉換為type-id型別,但沒有執行時型別檢查來保證轉換的安全性。它主要有如下幾種用法:
①用於類層次結構中基類和子類之間指標或引用的轉換。
進行上行轉換(把子類的指標或引用轉換成基類表示)是安全的;
進行下行轉換(把基類指標或引用轉換成子類表示)時,由於沒有動態型別檢查,所以是不安全的。
②用於基本資料型別之間的轉換,如把int轉換成char,把int轉換成enum。這種轉換的安全性也要開發人員來保證。
④把任何型別的表示式轉換成void型別。
注意:static_cast不能轉換掉exdivssion的const、volitale、或者__unaligned屬性。
3.2 dynamic_cast
用法:dynamic_cast < type-id > ( exdivssion )
該運算子把exdivssion轉換成type-id型別的物件。Type-id必須是類的指標、類的引用或者void *;
如果type-id是類指標型別,那麼exdivssion也必須是一個指標,如果type-id是一個引用,那麼exdivssion也必須是一個引用。
dynamic_cast主要用於類層次間的上行轉換和下行轉換,還可以用於類之間的交叉轉換。
在類層次間進行上行轉換時,dynamic_cast和static_cast的效果是一樣的;
在進行下行轉換時,dynamic_cast具有型別檢查的功能,比static_cast更安全。