文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
4.4 C++11:提高静态类型安全
依赖静态类型安全有两大好处:
- 明确意图
- 帮助程序员直接表达想法
- 帮助编译器捕获更多错误
- 帮助编译器生成更好的代码。
第二点是第一点的结果。受 Simula 的启发,我对 C++ 的目标是要提供一个灵活可扩展的静态类型系统。目的不仅是类型安全,还要能够直接表达细粒度的区别,例如物理单位检查(§4.2.7)。一段只用了内建类型如整型和浮点型写成的程序,也算是类型安全但却没有由此带来特别的安全优势。那样的代码没有直接表达应用中的概念。特别需要指出,int
或者 string
几乎可以表达任何东西,所以传递这样的值就完全没有给出被传递值的任何语义信息。
C++11 中与类型安全直接相关的改进有:
- 对于线程和锁的类型安全接口——避免 POSIX 和 Windows 在并发代码中对
void**
及宏的依赖(§4.1.2) - 范围
for
——避免错误地指定范围(§4.2.2) - 移动语义——解决指针的过度使用问题(§4.2.3)
- 资源管理指针(
unique_ptr
和shared_ptr
(§4.2.4)) - 统一初始化——让初始化更通用,更一致,更安全(§4.2.5)
constexpr
——消除多处(无类型和无作用域的)宏的使用(§4.2.7)- 用户定义的字面量——让用户定义类型更像内建类型(§4.2.8)
enum class
——消除一些涉及整型常量的弱类型做法std::array
——避免内建数组不安全地退化
成指针
委员会一直收到建议,应当通过禁止不安全特性(例如,废弃像内建数组和类型转换这样的 C 风格特性)来改善类型安全。然而,移除特性(取缔
它们)的尝试一再失败,因为用户无视移除的警告并坚持要求实现的提供者继续支持这些特性。一个更可行的方式似乎是给用户提供使用指南和实施指南的手段,同时保持标准本身继续和先前的版本兼容(§10.6)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论