强制转换是强制将一种数据类型转换为另一种数据的特殊运算符。作为运算符,类型转换是一元的,并且与其他任何一元运算符具有相同的优先级。
大多数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