C++ 中的型別轉換運算子


強制型別轉換是一種特殊的運算子,它強制將一種資料型別轉換為另一種資料型別。作為運算子,強制型別轉換是一元運算子,具有與任何其他一元運算子相同的優先順序。

大多數 C++ 編譯器支援的最通用的強制型別轉換如下所示

(type) expression

其中 type 是所需的資料型別。C++ 還支援其他強制型別轉換運算子,它們列在下面 -

  • ? const_cast<type> (expr) const_cast 運算子用於顯式覆蓋強制型別轉換中的 const 和/或 volatile。目標型別必須與源型別相同,除了其 const 或 volatile 屬性的更改。這種型別的強制型別轉換操作傳遞物件的 const 屬性,將其設定為或刪除。

  • ? dynamic_cast<type> (expr) dynamic_cast 執行執行時強制型別轉換,驗證強制型別轉換的有效性。如果無法進行強制型別轉換,則強制型別轉換失敗,表示式計算結果為 null。dynamic_cast 對多型型別執行強制型別轉換,並且只能將 A* 指標強制轉換為 B* 指標,如果指向的物件實際上是 B 物件。

  • ? reinterpret_cast<type> (expr) reinterpret_cast 運算子將指標更改為任何其他型別的指標。它還允許在指標和整數型別之間進行強制型別轉換,反之亦然。

  • ? static_cast<type> (expr) static_cast 運算子執行非多型強制型別轉換。例如,它可以用於將基類指標強制轉換為派生類指標。

在使用類和物件時,將使用所有上述強制型別轉換運算子。現在,嘗試以下示例以瞭解 C++ 中可用的簡單強制型別轉換運算子。將以下 C++ 程式複製並貼上到 test.cpp 檔案中,然後編譯並執行此程式。

示例程式碼

#include <iostream>
using namespace std;
main() {
   double a = 21.09399;
   float b = 10.20;
   int c ;
   c = (int) a;
   cout << "Line 1 - Value of (int)a is :" << c << endl ;
   c = (int) b;
   cout << "Line 2 - Value of (int)b is :" << c << endl ;
   return 0;
}

輸出

Line 1 - Value of (int)a is :21
Line 2 - Value of (int)b is :10

更新於: 2019-07-30

449 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告