代码之家  ›  专栏  ›  技术社区  ›  daniel

为什么boost的模板化程度如此之高?

  •  7
  • daniel  · 技术社区  · 17 年前

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

    例如,互斥类。所有互斥体概念都是作为模板实现的,在模板中可以简单地创建几个基类或抽象类,并使用与该概念匹配的接口。

    回答后编辑:我考虑过虚拟函数的成本,但有时为了更好地理解,难道不值得付出很少的性能代价吗?我的意思是,有时(特别是使用boost),由于误用模板,很难理解模板化代码并解密编译器错误。

    2 回复  |  直到 17 年前
        1
  •  20
  •   Salman A    17 年前

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

    此外,C++中的模板非常强大和灵活——它们已经被证明是一种图灵完整的语言。对于模板,有些事情很容易做到,这需要对运行时多态性进行更多的工作。

        2
  •  3
  •   dirkgently    17 年前

    模板允许您执行算法的通用版本。容器的通用版本。您不再需要担心类型,您所生成的内容也不再需要与类型绑定。Boost是一系列的库,它们试图解决日常生活中使用C++的各种各样的人的需求。