在浏览论坛的时候看到一句非常有道理的解释(先记录下来,以后有想法在此博客上在添加): 同一个项目内部,尽可能使用模板,带来的是性能和空间的改善。换句话说,模板通常只用于项目内部,跨项目不要传递模板,不可靠而且危险,即使看起来是同一个模板,在不同项目中的内存布局也可能是不同的。但如果某个接口需要公开,或者允许外部项目实现,模板无能为力,只能使用虚函数。比如COM,公开的接口都是虚函数,但实现接口的项目可以使用模板技术实现(最典型的就是ATL)。总之,模板适合处理内务,虚函数适合对外交流。