猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
类成员函数模板可以是虚拟的吗?
类成员函数模板可以是虚拟的吗?
我听说C+类成员函数模板不能是虚拟的。这是真的吗?
如果它们可以是虚拟的,那么在一个场景中使用这样一个函数的例子是什么呢?
慕沐林林
浏览 648
回答 3
3回答
智慧大石
模板都是关于编译器生成代码的编译时..虚拟函数都是关于运行时系统,确定要调用哪个函数。运行时间.一旦运行时系统计算出它需要调用一个经过模板化的虚拟函数,编译就全部完成,编译器就不能再生成适当的实例了。因此,您不能有虚拟成员函数模板。然而,有一些强大而有趣的技术来自于将多态性和模板结合在一起,特别是所谓的模板。类型擦除.
0
0
0
慕勒3428872
C+现在不允许虚拟模板成员函数。最可能的原因是实现它的复杂性。Rajendra给出了为什么现在不能这样做的很好的理由,但是如果对标准进行合理的修改,这是可能的。特别是,如果考虑虚拟函数调用的位置,计算模板函数的实例化数量和构建vtable似乎很困难。标准人们现在还有很多其他的事情要做,C+1x也是编译器编写人员的大量工作。何时需要模板成员函数?有一次,我遇到这样的情况,我试图用纯虚拟基类重构层次结构。这是一种执行不同战略的糟糕风格。我想将其中一个虚拟函数的参数更改为数字类型,而不是重载成员函数,并覆盖所有子类中的每个重载,我尝试使用虚拟模板函数(并且必须发现它们不存在)。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续