C++Primer显示类型转换实例讲解
程序员文章站
2022-10-27 16:40:15
一个命名的强制类型转换形式:cast_name(expression);(type是转换类型,如果是引用类型,返回左值,即地址对象)
cast_name:
1.static_cast
不包含底层co...
一个命名的强制类型转换形式:cast_name
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;
上一篇: 绝天地通是什么意思?颛顼为何要绝天地通?
下一篇: SQLServer之创建显式事务