欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++Primer显示类型转换实例讲解

程序员文章站 2022-10-27 16:40:15
一个命名的强制类型转换形式:cast_name(expression);(type是转换类型,如果是引用类型,返回左值,即地址对象) cast_name: 1.static_cast 不包含底层co...

一个命名的强制类型转换形式:cast_name(expression);(type是转换类型,如果是引用类型,返回左值,即地址对象)

cast_name:

1.static_cast

不包含底层const(底层const:指针指向的对象是常量)的任何具有明确定义的类型转换。用处:

1.将较大的算术类型转换给较小的类型时

double slope = static_cast(j) / i;

2.找回存放在void *指针中的值。例:

void *p = &d;
double *dp = static_cast(p);

2.dynamic_cast

3.const_cast

只能改变const属性,只能改变运算对象的底层const。只有const_cast可以改变表达式的常量属性,可对非常量的对象进行获取写权限,常用于有函数重载的上下文中。

const char *cp;
char *p = static_cast(cp);	//错误:static_cast不能转换掉const性质
static_cast(cp);			//正确:字符串字面值转换成string类型
const_cast(cp);				//错误:const_cast只改变常量属性

4.reinterpret_cast

为运算对象的位模式提供较低层次上的重新解释。本质上依赖机器,安全使用需对涉及的类型和编译器实现转换过程都非常了解。

int *ip;
char *cp = reinterpret_cast(ip);//等价char *cp = (char *)ip;