为什么提升如此严重?

时间:2009-02-24 18:12:52

标签: c++ boost

有很多地方在我看到一个模板化的课程,并且不禁想到为什么编写它的人使用了模板。

例如,互斥类(es)。所有互斥锁概念都是作为模板实现的,人们可以简单地创建一些基类或抽象类,其接口与概念相匹配。

在回答之后编辑:我考虑过虚拟功能的成本,但是为了更好地理解,有时候是否值得给出很少的性能损失?我的意思是有时(尤其是使用boost)很难理解模板化代码并解密编译器错误,因为误用了模板。

2 个答案:

答案 0 :(得分:20)

模板可以在编译时进行高度优化,而无需虚拟功能。许多模板技巧可以被认为是编译时多态。由于您在编译时知道您想要哪些行为,因此每次使用该类时,为什么要为虚拟函数调用付费。作为奖励,很多模板化代码可以很容易地内联,以消除最基本的函数调用开销。

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

答案 1 :(得分:3)

模板允许您执行算法的通用版本。容器的通用版本。您不再需要担心类型和您生产的产品不再需要与类型相关联。 Boost是一个图书馆的集合,试图满足在日常生活中使用C ++的各种各样的人的需求。

相关问题