模板虚函数不能存在原因

模板是编译器在编译期间生成代码。虚函数是程序运行期间计算出调用哪个函数。

一旦程序在运行期间计算出它需要调用一个模板化的虚函数,汇编已经生成了,编译器不能再生成合适的实例了。因此,你不能使用模板虚函数。

不过,有一些强大且有趣的技术起源于结合多态和模板,尤其是所谓的 type erasure

c++模板的解释:

成员函数模板不能被声明为virtual。这个约束是强制的,因为虚函数的通常实现是使用固定大小的虚函数表,每个虚函数有一个入口。然而,模板函数的实例数不是固定的,直到整个程序被编译一遍。

posted @ 2019-10-24 18:00  二狗啸地  阅读(767)  评论(0编辑  收藏  举报