C++ 强制类型转换运算符
C++ 中的强制类型转换运算符
强制类型转换是一种特殊的运算符,用于强制将一种数据类型转换为另一种数据类型。强制类型转换是一元运算符,其优先级与任何其他一元运算符相同。
语法
大多数 C++ 编译器支持的最通用强制类型转换如下 -
(type) 表达式
C++ 类型强制类型转换运算符
其中 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