【发布时间】:2009-02-24 18:12:52
【问题描述】:
在 boost 中有很多地方我看到了一个模板化的类,不禁想到为什么编写它的人使用模板。
例如,互斥类。所有互斥锁概念都作为模板实现,可以简单地创建几个基类或抽象类,并使用与该概念匹配的接口。
在回答后编辑:我考虑了虚函数的成本,但有时为了更好地理解而放弃很少的性能损失难道不值得吗?我的意思是有时(尤其是使用 boost),由于滥用模板,很难理解模板化代码和解密编译器错误。
【问题讨论】:
-
对这个人来说是个好问题:stackoverflow.com/users/5597/anthony-williams(boost.thread 的作者):p
-
C++ 社区的主要理念是“你只得到你想要的”。 Boost 项目正在尝试,就像 STL 一样,通过使用模板设计所有库来遵循这一理念。但是,正如您所提到的,这是有代价的:理解有时会受到影响。如果你想要一个更容易理解的库,也许你应该看看 Qt 库。它包含 Boost 的大部分功能以及更多功能!在我看来,Qt 的设计允许大规模 C++ 开发,这是 Boost 完全缺乏的。