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