C++语言的设计和演化 8.8分
读书笔记 强制
MathxH

语法

强制是C++里面最容易引起错误的功能之一,它们在语法上也是最难看的东西。然而: 任何支持系统程序设计的语言都不可能完全清楚强制,即使是为了有效地支持数值计算,往往也需要某种形式的类型转换。这样,目标应该是尽可能减少强制的使用。 dynamic_cast可能是C++强制中最重要的一部分。

何时使用动态强制

引进RTTI识别,实际上就是把对象分成两种: 1.一种包含了与之关联的类型信息,因此它们的类型几乎总能被确定,与上下文没联系。 2.另一种不可能。

RTTI的使用和误用

只有必须用的时候,才应该明确的使用运行时类型信息。静态编译时检查更安全,带来的开销更少。C++的方式是鼓励尽可能地依靠(更安全更可靠的)静态类型系统,要求用户付出的最小代价也更小一些。

静态强制和动态强制

对于指向类的指针而言,dynamic_cast和static_cast的作用都是在类层次上穿行。reinterpret_cast用来取代T(expr)----原C语言风格的强制,需要谨慎使用 reinterpret_cast。
对于所有的情况,最好是所有的强制------无论是老的新的----都能删除掉。(因为打破了类型系统)

0
《C++语言的设计和演化》的全部笔记 13篇
豆瓣
免费下载 iOS / Android 版客户端