🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## Conversion 总结 在这一章里,你学习了 Boost.Conversion 库,从 `polymorphic_cast`开始。`polymorphic_cast` 的基本原理是代码的清晰性和安全性,它使我们在代码中更灵活地表达我们的意图,还有安全性,与它的竞争者 `dynamic_cast<T*>`相比它更为安全,因为对结果指针的测试很容易忘记。 接着,你看到了安全的优化,使用 `polymorphic_downcast`, 它在调试模式下增加了类似于`dynamic_cast`的安全性,但却是使用 `static_cast` 来进行转换。这样比单独使用 `static_cast` 更安全。 `numeric_cast` 帮助你避免数值转换中的某些困难。还有,代码的清晰性也得到提高,从而避免了未定义的行为以及实现定义的行为。 最后一个是 `lexical_cast`. 没有重复的转换函数。这就是为什么它被提议纳入下一个版本的C++标准库的原因。它是一个非常小巧的、用于转换不同的可流数据类型的工具。 如果你曾经看到过这些转型的实现,你会同意它们之间没有一个是复杂的。还有,它具有它们所需的洞察力、远见和知识,并正确地、可移植地、高效地实现了它们。不是所有人都认识到使用`dynamic_cast`时会发生某些错误。不是很多人都知道整数类型转换和提升的复杂规则。Boost提供的转换操作包含了所有这些知识,并具有良好的设计和测试;它们是你所要的最好的选择。