一、答案

前者是可以的,后者是不可以的。

#include <iostream>template <class T>
class Base
{
public:virtual void f1() { std::cout << "Base'f1 is called." << std::endl; } virtual void f2() = 0;
};template <class T>
class Dev : public Base<T>
{
public:void f1() { std::cout << "Dev'f1 is called." << std::endl; }void f2() { std::cout << "Dev'f2 is called." << std::endl; }
};int main()
{Base<int> *p = new Dev<int>;p->f1();return 0;
}

结果

Dev'f1 is called.

二、原因

编译器都期望在处理类的定义的时候就能确定这个类的虚函数表的大小,如果允许有类的虚成员模板函数,那么就必须要求编译器提前知道程序中所有对该类的该虚成员模板函数的调用,而这是不可行的。

(SAW:Game Over!)

C/Cpp / 模板类中可以使用虚函数吗?模板成员函数可以是虚函数吗?相关推荐

  1. C++中模板类中的成员函数以及模板函数在类外定义

    在C++中,类中的成员函数可以在类外完成定义,从而显得类中的成员函数看起来简洁明了.但是模板类里的成员函数和模板函数与普通的成员函数在类外定义不同. 先定义一个模板类以及成员函数和模板函数: 接下我们 ...

  2. C++模板类中使用静态成员变量(例如Singleton模式)

    一个最简单Singleton的例子: / Test.h / template <class _T> class CTest { private: _T n; static CTest< ...

  3. abstract类中不可以有private的成员_C++ 类:声明成员函数与实现

    接上文... 16.3类的成员 2.成员函数 1.构造函数 ... 2.拷贝构造函数 有了类的构造函数我们就可以创建类的实例了,下图中分别使用不同的构造函数一共创建了4个动物的对象,现在程序中就有4个 ...

  4. 模板类中使用友元函数的方式,派生类友元函数对基类的成员使用情况

    在一般友元函数的前面加上 template<typename T),注意在函数的声明和定义处都要加这个模板 例如: //模板类,长方体类 template <typename Elemen ...

  5. 学习笔记-----C++模板类中友元函数重载输出运算符时提示无法解析的外部符号解决方案

    今天在写单向链表实现线性表的时候打算重载输出运算符用来将线性表输出,结果无奈又遇到了问题. 大致代码如下 <pre name="code" class="cpp&q ...

  6. c++模板类(一)理解编译器的编译模板过程

    如何组织编写模板程序 前言 常遇到询问使用模板到底是否容易的问题,我的回答是:"模板的使用是容易的,但组织编写却不容易".看看我们几乎每天都能遇到的模板类吧,如STL, ATL, ...

  7. abstract类中不可以有private的成员_别再说你不懂java面向对象了,阿里P7大佬一次性给你讲的明明白白

    前言 面向对象在百度百科中是这样解释的:"面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物".说的好像很流弊的样子,看看就行. 包的认识 1.1:包 ...

  8. abstract类中不可以有private的成员_C++类成员的三种访问权限:public/protected/private...

    1.访问限定符 C++ 通过 public.protected.private 三个关键字来控制成员变量和成员函数的访问权限(也称为可见性),分别表示:公有的.受保护的.私有的. class 2.访问 ...

  9. abstract类中不可以有private的成员_UML类图还不懂?来看看这版乡村爱情类图,一把学会!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.码场心得 有个词叫内卷严重! 最开始听到这个词是有个小伙伴在我的一篇HashMap源码分析 ...

最新文章

  1. python代码实现插入排序
  2. J2EE后台UI系统框架搭建-EXTJs使用(4.1 GPL版本)
  3. 数论四之综合训练——Magic Pairs,Crime Management,Top Secret,组合数问题
  4. linux怎么进去vi编辑器,red hat enterprise linux开机怎么进入vi编辑器界面?
  5. VSFTP的主动模式和被动模式
  6. AI大时代下,零基础进入人工智能领域该如何学习?
  7. 易语言 网页用什么编码_Plessey条码用的什么编码方式?
  8. Python组合数据类型:字典dictionary
  9. 怎么重置unity界面_请问itween如何重置?
  10. 华为s2600t java_华为服务器RH2288H V2连接 华为存储S2600T
  11. 关于配置了数据库方言为MySQLInnoDBDialect后Hibernate不能自动建表的问题
  12. 微信看涨跌30秒平台,10元微交易平台排行榜
  13. 数据分析第二章课后习题解答
  14. dcs常用的冗余方式_冗余技术在DCS平台应用分析
  15. 基于角色、标记及BLP模型的多级访问控制-B/S架构OA系统应用
  16. 本地k8s集群搭建保姆级教程(4)-安装k8s集群Dashboard
  17. 代码整洁之道精华——第十四章 逐步改进
  18. 数据预处理 第3篇:数据预处理(使用插补法处理缺失值)
  19. 3dsmax-3dsmax技巧
  20. 真羡慕你!竟有我这样的好闺蜜!

热门文章

  1. C# 实现ADSL自动断网和拨号(适用于拨号用户)
  2. 中学校园网建设实践与思考
  3. 【python 学习】知识点日记
  4. linux修改文件名常用命令
  5. sonarqube通过sonarqube maven插件分析maven工程使用的mvn命令示例
  6. 查看win10剩余激活时间
  7. flink介绍:有界流和无界流
  8. golang设置运行CPU数量及sync.Mutex全局互斥锁的使用示例
  9. jenkins 发送邮件插件Email Extension Template Plugin配置及script pipeline完整脚本
  10. Hadoop添加到系统环境变量