0.旧式转换
先看看旧式的强制类型转换(如,整数进行浮点除法时会把其中一个变量用旧式转换转为 double):
//type(expr) 函数形式的强制类型转换
int count1 = 10;
bool not_empty1 = bool(count1); //为true
//或者(type)expr C语言风格的强制类型转换
int count2 = 0;
bool not_empty2 = (bool)count2; //为false
根据所涉及的类型不同,旧式的强制类型转换分别具有与 const_cast、static_cast、reinterpret_cast 相似的行为。与命名的强制类型转换相比,旧式的强制类型转换出问题更不容易追踪。
除了旧式的转换,还有四种命名的强制类型转换:static_cast、const_cast、dynamic_cast 和 reinterpret_cast。
1.static_cast任何具有明确定义的类型转换,只要不包含底层const(形如const char *ptr,表示指针所指的对象是一个常量),都可以使用 static_cast。(C++ Primer Plus上说,只有两者其中一方可以隐式转换为另一方(如向上转型),转换才是合法的,否则会出错)
//进行强制类型转换以便执行浮点数除法
int a = 1, b = 2;
double result = static_cast(a) / b;
可以参照cpp在线手册的例子来理解他的应用场景:
#include
#include
struct B {
int m = 0;
void hello() const {
std::cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?