分享

《剑指Offer——名企面试官精讲典型编程题》第2章读书笔记

 雄Frank 2011-12-13
面试官真正喜欢的是在第一眼就能看到应聘者擅长的技能和之前的项目经历,而不是只有“简历”两个字的封面,或者是大幅校徽的图标以及自己很得意的照片
《剑指Offer——名企面试官精讲典型编程题》第2章读书笔记
1)C++4个与类型转换关键字,各有什么特点,使用场合。
百度后的结果:dynamic_cast,const_cast,static_cast,reintpret_cast;
dynamic_cast
表达式: dynamic_cast<type-id>(expression);运行期进行类型检查, 验证是否可以从 expression中萃取出 type-id 接口
const_cast
表达式: const_cast<type-id>(expression);作用: 编译期类型检查, 可合法地修改以const及volatile所修饰变量的值
static_cast
表达式: static_cast <type-id>(expression);作用: 编译期类型检查, 不允许两个不相干的类型相互转换
reinterpret_cast
表达式: reinterpret _cast<type-id>(expression);作用: 编译期类型检查, 支持对任意类型之间的相互转换
C++ 同时提供了四种新的强制转型形式(通常称为新风格的或 C++ 风格的强制转型):
const_cast(expression) ,dynamic_cast(expression) ,reinterpret_cast(expression) ,static_cast(expression)  
 每一种适用于特定的目的:
·dynamic_cast 主要用于执行“安全的向下转型(safe downcasting)”,也就是说,要确定一个对象是否是一个继承体系中的一个特定类型。它是唯一不能用旧风格语法执行的强制转型,也是唯一可能有重大运行时代价的强制转型。
   ·static_cast 可以被用于强制隐型转换(例如,non-const 对象转型为 const 对象,int 转型为 double,等等),它还可以用于很多这样的转换的反向转换(例如,void* 指针转型为有类型指针,基类指针转型为派生类指针),但是它不能将一个 const 对象转型为 non-const 对象(只有 const_cast 能做到),它最接近于C-style的转换。 
·const_cast 一般用于强制消除对象的常量性。它是唯一能做到这一点的 C++ 风格的强制转型。
·reinterpret_cast 是特意用于底层的强制转型,导致实现依赖(implementation-dependent)(就是说,不可移植)的结果,例如,将一个指针转型为一个整数。这样的强制转型在底层代码以外应该极为罕见。
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多