c++ - 类成员函数模板可以是虚拟的吗?

标签 c++ templates virtual-functions function-templates c++-faq

我听说 C++ 类成员函数模板不能是虚拟的。这是真的?

如果它们可以是虚拟的,那么使用这种功能的场景示例是什么?

最佳答案

模板都是关于编译器在编译时生成代码的。虚函数都是关于运行时系统确定在运行时调用哪个函数。

一旦运行时系统发现它需要调用模板化的虚函数,编译就完成了,编译器无法再生成适当的实例。因此,您不能拥有虚拟成员函数模板。

然而,结合多态性和模板产生了一些强大而有趣的技术,特别是所谓的 type erasure

关于c++ - 类成员函数模板可以是虚拟的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2354210/

相关文章:

c++ - 重构代码以使用 Boost 共享指针

getter 的 c++ const 正确性问题

c++ - 调用派生类型的模板化函数

c++ - 在构造函数中调用虚函数

c++ - 拒绝访问试图打开进程

c++ - 将 cout 重定向到一个文件

C++构造函数中的通用引用和返回值优化(rvo)

c++ - 带有模板模板参数的 CRTP

c++ - 多态与常规继承?

C++ 构造函数 : why is this virtual function call not safe?