位置:首页 > 高级语言 > 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