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

更新于: 2019-07-30

449 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告