详述C++casting *** 作

详述C++casting *** 作,第1张

概述Casting 类型转换,也就是将数据从一种类型转换到另一种类型的 *** 作。本文首先给出两种类型转换的方式:隐式转换和显式转换,然后简单介绍一下C语言常用的类型转换方式,最后详细叙述C++中常用的三种类型

Casting----类型转换,也就是将数据从一种类型转换到另一种类型的 *** 作。本文首先给出两种类型转换的方式:隐式转换和显式转换,然后简单介绍一下C语言常用的类型转换方式,最后详细叙述C++中常用的三种类型转换模版:static_cast,const_cast,reinterpret_cast

1.隐式转换和现实转换

隐式转换(Implict conversion):这种类型转换 *** 作是由编译器自动完成的,程序员不需要亲自 *** 作。

例如:

int iVariable = 10;float fVariable = iVariable; // 这里将一个整数赋值给一个浮点数,隐式触发类型转换

显式转换(Explicit conversion:这种类型转换需要程序员自己显式给出类型修饰。

例如:

int iVariable = 20;float fVariable = (float) iVariable / 10;
2.C++中常用三种类型转换方式

static_cast

用法:static_cast<type>(Expression); 注:type是目标类型,Expression(表达式)----可以是一个变量,或者具有计算结果的表达式

例如:

int iVariable = 30;float fVariable = static_cast<float>(iVariable); // 这一语句将类型为int的变量iVariable转换为float类型的fVariable

从上面的示例代码可知,static_cast告诉编译器尝试转换两个不同类型的变量。这个转换方式常用来转换C++语言自有类型(build-in type,例如:char,int,float,double),即使类型之间会有精度的损失。此外,static_cast *** 作只能用在相关的指针类型之间。

例如:

int* pToInt = &iVariable;float* pTofloat = &fVariable;float* pResult = static_cast<float*>(pToInt); // error:不同类型的指针之间无法转换

const_cast

用法:const_cast<type>(Expression); 注:type是目标类型,Expression(表达式)----可以是一个变量,或者具有计算结果的表达式

例如:

voID aFunction(int* a){		cout << *a << endl;}int main(){		int a = 10;		const int* iVariable = &a;		aFunction(const_cast<int*>(iVariable));		// 因为函数aFunction中参数没有指定为const int*类型,那么就需要将const int*类型的变量显式的转换为非const类型		return 0;}

const_cast可能是使用做少的类型转换 *** 作,因为它不可以在不同类型之间进行转换。它仅仅是将一个const修饰的类型变量转化为非const修饰的类型变量。一般而言,我们很少使用到这个 *** 作。

reinterpret_cast

用法:reinterpret_cast<type>(Expression); 注:type是目标类型,Expression(表达式)----可以是一个变量,或者具有计算结果的表达式

目前来说,这是最强大的类型转换 *** 作。reinterpret_cast实现在任意类型之间进行显式转换,也包括指针类型转换成任意其他指针类型。但是,它不能完成const_cast *** 作的功能。

总结

以上是内存溢出为你收集整理的详述C++casting *** 作全部内容,希望文章能够帮你解决详述C++casting *** 作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1158113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存