博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++转型
阅读量:6258 次
发布时间:2019-06-22

本文共 822 字,大约阅读时间需要 2 分钟。

hot3.png

##C风格的转型动作

(T) expression // 将expression转型为T
T(expression) // 将expression转型为T

两种形式并无差别,纯粹是小括号的的摆放位置不同而已。

##C++的转型动作

C++提供了四种新式转型(常常被称为new-style或C++-style casts)

  1. const_cast<T>(expression)
  2. dynamic_cast<T>(expression)
  3. reinterpre_cast<T>(expression)
  4. static_cast<T>(expression)

各有不同的目的:

const_cast通常被用来将对象的常量性转除(cast away the constness)。它也是唯一有此能力的C++ style 转型操作符。

dynamic_cast主要用来执行“安全向下转型”(safe downcasting),也就是用来决定某对象是否归属继承体系中的某个类型。它是唯一无法由C语法转型执行的动作,也是唯一可能耗费重大运行成本的转型动作。

retinterpret_cast 意图执行低级转型,实际动作(及结果)可能取决于编译器,这也就代表它不可移植。例如将一个pointer to int转型为一个int。这一类转型在低级代码以外很少见。

static_cast用来强迫隐式转换(implicit conversion),例如将non-const对象转为const对象,或将int转为double等等。它也可以用来执行上述多种转换的反向转换,例如将void* 指针转为typed指针,将pointer-to-base转为pointer-to-derived。但它无法将const转为non-const---这个只是const_cast才能办得到。

转载于:https://my.oschina.net/skyhacker2/blog/359626

你可能感兴趣的文章
我的学习计划
查看>>
理解 Go 语言中的方法和接收者
查看>>
iView 发布 2.0.0-rc.16 版本
查看>>
React表单组件
查看>>
从0到1学习node(八)之异步控制工具async
查看>>
Android 运行时权限库
查看>>
网易漫画Swift混编实践
查看>>
如何针对业务设计架构?——QCon热点专题前瞻
查看>>
你的可用性达标了吗?云端业务性能高可用的深度实践
查看>>
Mozilla开发全新的公开网络API WebXR 来实现增强现实
查看>>
用户超5亿,三年投10亿,开发者如何抢滩支付宝小程序蓝海?
查看>>
[使用 Weex 和 Vue 开发原生应用] 2 编写独立页面
查看>>
Cosmos DB:全球分布式数据库
查看>>
Scrum联盟的新任全球营销副总裁访谈
查看>>
从把事做对到做对的事
查看>>
悟空:用Go语言编写的全文搜索引擎
查看>>
.NET 4.6的RyuJIT编译器中又发现两个严重的Bug
查看>>
Rust发布1.32版本,跟踪、模块化、宏等方面均有改进
查看>>
Go语言开源这九年:它是不是你最喜欢的语言?
查看>>
2017敏捷沙滩大会:完美软件,测量持续交付,以及探索未来
查看>>