当前位置: 首页 > 文档资料 > C++ 中文教程 >

类型转换操作符(Casting operators)

优质
小牛编辑
131浏览
2023-12-01

强制转换是一种特殊操作符,它强制将一种数据类型转换为另一种数据类型。 作为运算符,强制转换是一元的,并且具有与任何其他一元运算符相同的优先级。

大多数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对多态类型执行强制转换,并且只有在指向的对象实际上是B对象时,才能将A *指针强制转换为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