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