有很多地方在我看到一个模板化的课程,并且不禁想到为什么编写它的人使用了模板.
例如,互斥类(es).所有互斥锁概念都是作为模板实现的,人们可以简单地创建一些基类或抽象类,其接口与概念相匹配.
在回答之后编辑:我考虑过虚拟功能的成本,但是为了更好地理解,有时值得给予很少的性能损失吗?我的意思是有时候(尤其是使用boost)很难理解模板化代码并解密编译器错误,这是因为滥用模板.
模板可以在编译时进行高度优化,而无需虚拟功能.许多模板技巧可以被认为是编译时多态.由于您在编译时知道您想要哪些行为,因此每次使用该类时,为什么要为虚拟函数调用付费.作为奖励,很多模板化代码可以很容易地内联,甚至消除最基本的函数调用开销.
此外,C++中的模板非常强大和灵活 - 它们本身已被证明是一种图灵完整的语言.使用运行时多态性需要更多工作的模板有一些容易做的事情.