回覆列表
  • 1 # 使用者928021938244

    前面的是C的風格,後面的是C++的風格(也是推薦使用的)。差別在於,static_cast更安全一些,對於指標操作的話,多了一些檢查,例如無關指標就無法轉換,父類指標向孩子指標,無法轉換,常指標向非常指標無法轉換,而前面的那個則是通吃,通常是下面四個轉換的合體

    reinterpret_cast

    在低階程式設計以及硬體介面的開發過程中,常常需要將一個特定的物理記憶體地址賦值給一個指標。為此必須使用

    reinterpret_cast運算子計算地址值。例子如下:

    void *p;

    // 將地址 0x5800FF 付給指標 p

    p = reinterpret_cast (0x5800FF);

    static_cast

    通常這個運算子用來進行數值型別間的轉化,比如int到float,也可以是自定義的某些資料型別的轉化。這個運算子通常也可以用於類指標之間的轉化,但是這個運算子在父類到子類的轉化中沒有做檢查並不安全。

    dynamic_cast

    這個運算子專門用於指標或者引用操作,也可以進行point -> void 的操作。對父類和子類之間的指標裝換這個操作具有型別檢查的功能,比較安全!這裡要注意的是,如果父類和子類之間沒有虛擬函式(文件稱為多型類),那麼dynamic_cast不能執行轉換,應採用static_cast來進行轉換。

  • 中秋節和大豐收的關聯?
  • 電腦上同時裝office 2010和2003可以用嗎?