通常情况下有4种方式进行强制类型转换,他们是static_cast、const_cast、dynamic_cast、reinterpret_cast。
1、static_cast
用于将一种数据类型转换成另一种数据类型,使用格式如下:
变量1 = static_cast<变量1数据类型>(另外一种数据类型变量或表达式),例如:
int a = 1;
float b;
b = static_cast<float>(a);
2、const_cast
用于取出const属性,把const类型的指针变为非const类型的指针,如:
#include <iostream>
using namespace std;
int main()
{
int a = 10;
const int *p = &a; // 被const修饰,不能使用该指针修改其指向内容的值
int *q;
q = const_cast<int *>(p); // 去除p的常量性给q,如果不去除直接赋值会报错
*q = 20;
cout<<"a的地址为:"<<&a<<" a的值为:"<<a<<endl;
cout<<"*q指向的地址为:"<<q<<" *q的值为:"<<*q<<endl;
}
3、reinterpret_cast
interpret是解释的意思,reinterpret即为重新解释,此标识符的意思即为数据的二进制形式重新解释,但是不改变其值,只是这个转换方式很少使用。
扩展资料:
当操作数的类型不同,而且不属于基本数据类型时,经常需要将操作数转化为所需要的类型,这个过程即为强制类型转换。强制类型转换具有两种形式:显式强制转换和隐式强制类型转换。强制类型转换在C、C++、Java、Python中都会用到。
C++语言的特点:支持数据封装和数据隐藏、支持继承和重用、支持多态性,相比C语言,不同之处在于:
1、C语言是面向过程的,而C++是面向对象的。
2、C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C++对于大多数的函数都是有集成的很紧密。
3、特别是C++中的图形处理,它和语言的图形有很大的区别。C语言中的图形处理函数基本上是不能用在中C++中的。
4、C和C++中都有结构的概念,但是在C语言中结构只有成员变量,而没成员方法,而在C++中结构中,它可以有自己的成员变量和成员函数。但是在C语言中结构的成员是公共的,什么想访问它的都可以访问;而在C++中它没有加限定符的为私有的。
5、C语言可以写很多方面的程序,但是C++可以写得更多更好,C++可以写基于DOSr程序,写DLL,写控件,写系统。
6、C语言对程序的文件的组织是松散的,几乎是全要程序处理;而c++对文件的组织是以工程,各文件分类明确。
参考资料:
转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。比如,为了转换一个类型为doubole的浮点数的指针到整型:
代码:
int i;
double d;
i = (int) d;或者:i = int (d);