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
cpp_operators.htm
廣告