Conversion 总结
优质
小牛编辑
120浏览
2023-12-01
在这一章里,你学习了 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提供的转换操作包含了所有这些知识,并具有良好的设计和测试;它们是你所要的最好的选择。