首页 > 代码库 > C++转型
C++转型
C风格的转型动作
(T) expression // 将expression转型为T
``` T(expression) // 将expression转型为T
两种形式并无差别,纯粹是小括号
的的摆放位置不同而已。
C++的转型动作
C++提供了四种新式转型(常常被称为new-style或C++-style casts)
- const_cast (expression)
- dynamic_cast (expression)
- reinterpre_cast (expression)
- static_cast (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
才能办得到。
C++转型
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。