Operators 总结

为用户自定义类型提供一组正确的关系操作符和算术操作符是非常重要的,而且正确地实现它也是一个重大 的挑战。通过使用Operators库,这个任务大大地简化了,正确性和对称性也随之而来。除此之外,这个库还提供了一组完整的操作符定义,这些类所支持 的概念被适当地命名和定义,可以在定义你的类时明确这些概念(也是通过Operators库!)。在本章中,我们已经看了几个例子,关于如何使用这个库来 改进带有操作符的程序,使程序更为简单,正确性也更有保证。一个可悲的事实是,为用户自定义类型提供重要的关系操作符和算术操作符常常被忽略掉,部分的原 因是由于为了正确获得它们需要做大量的工作。现在这种情形不会再出现了,因为有了Boost.Operators。

在提供关系操作符和算术操作符时要重点考虑的一点是,首先要确认提供它们是有必要的。当类型间存在顺 序关系时,或者在创建数值类型时,总是需要提供操作符的,但对于其它类型,操作符可能就不能清晰地传递设计的意图。操作符几乎总是提供语法上的好处,这种 语法上的好处不应被低估。不幸的是,操作符又是诱人的。明智地使用它们,它们就会发挥巨大的威力。当你决定为一个类增加操作符, Boost.Operators库可以为你的工作提高质量和效率。结论是,你应该在深思熟虑之后再决定是否给你的类增加操作符,当你决定要增加时,就使用 Operators库。

Operators库是多个人的贡献的结果。它从David Abrahams开始,并接受了Jeremy Siek, Aleksey Gurtovoy, Beman Dawes, 和 Daryle Walker等人的有价值的补充。正如多数Boost库一样,无数其它人的贡献才形成了今天这个库。