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对多态类型执行强制类型转换,并且仅当所指向的对象实际上是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