c++ - 为什么 boost 如此大量地模板化?

标签 c++ boost

在 boost 中有很多地方我看到了模板化的类,不禁思考为什么编写它的人使用模板。

例如,互斥锁类。所有互斥锁概念都作为模板实现,您可以在模板中简单地创建一些基类或具有与概念匹配的接口(interface)的抽象类。

回答后编辑:我考虑过虚函数的成本,但有时为了更好地理解而放弃很少的性能损失是否值得?我的意思是有时(尤其是在使用 boost 的情况下)真的很难理解模板化代码和解密由于误用模板而导致的编译器错误。

最佳答案

模板可以在编译时高度优化,而不需要虚函数。许多模板技巧都可以被认为是编译时多态性。既然你在编译时就知道你想要哪些行为,为什么每次使用该类时都要为虚函数调用付费。作为奖励,许多模板化代码可以轻松内联,以消除甚至是最基本的函数调用开销。

此外,C++ 中的模板非常强大和灵活 - 它们本身已被证明是一种图灵完备的语言。有些事情使用模板很容易完成,但需要更多的运行时多态性。

关于c++ - 为什么 boost 如此大量地模板化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/582878/

相关文章:

android - Cocos2d-x 3.14 Android崩溃

c# - C++ 和 C# 中的等效系统时钟毫秒数?

c++ - 如何使用 Boost 预处理器扩展字符串

c++ - 如何让迭代器进入 boost fusion map?

c++ - Thrust+boost代码编译错误

c++ - 等待 boost asio 的 future 在 io_service.stop() 之后永远持续

c++ - 调用成员函数时出错

c++ - 相似类型类的设计

c++ - CppCheck: 变量 'bla' 没有被赋值

c++ - 构建libssh时在qt和cmake错误上找不到libssh的功能