
计算机程序开发中强制转换是指强制类型转换。当 *** 作数的类型不同,而且不属于基本数据类型时,经常需要将 *** 作数转化为所需要的类型,这个过程即为强制类型转换。强制类型转换具有两种形式:显式强制转换和隐式强制类型转换。
强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。
1、显式强制类型转换
显式强制类型羡慎清转换需要使用强制类型转换运算符,格式如下:
type(<expression>)或(type)<expression>
其中,type为类型描述符,如int,float等。<expression>为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换 *** 作并不改变 *** 作数本身,运算后 *** 作数本身未改变。
2、隐式强兄前制类型转换
隐式类型转换发生在赋值孝档表达式和有返回值的函数调用表达式中。在赋值表达式中,如果赋值符左右两侧的 *** 作数类型不同,则将赋值符右边 *** 作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回。
通常情况下有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++对文件的组织是以工程,各文件分类明确。
参考资料:
强制类型转换——百度百科
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)