位置:首頁 > 高級語言 > C++教學 > C++轉換操作符

C++轉換操作符

轉換是一個特殊的操作符,它迫使一種數據類型轉換成另一種。轉換操作符是一元的,並與任何其它一元運算符具有相同的優先級。

多數C++編譯器所支持的最一般的轉換如下:

(type) expression 

其中類型是所希望的數據類型。C++支持的其他轉換運算,它們如下所列:

  • const_cast<type> (expr): const_cast會操作使用顯式覆蓋const和/或volatile轉換。目標類型必須是相同的,不同之處為const或易失性的屬性的改變的源類型。這種類型轉換操縱傳遞對象的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