1 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。

2. 构造函数不需要是虚函数,也不允许是虚函数,因为创建一个对象时我们总是要明确指定对象的类型,尽管我们可能通过实验室的基类的指针或引用去访问它。但析构却不一定,我们往往通过基类的指针来销毁对象。这时候如果析构函数不是虚函数,就不能正确识别对象类型从而不能正确调用析构函数。

参考资料:

  1. http://blog.sina.com.cn/s/blog_620882f401016ri2.html

  2. http://stackoverflow.com/questions/733360/why-do-we-not-have-a-virtual-constructor-in-c

最新文章

  1. JS-自制提速小工具:开发页面时需要按比例计算宽高值的快速计算器
  2. settings.php rwx
  3. Windows Live Writer 初次使用
  4. 转:C++ Boost/tr1 Regex(正则表达式)快速指南
  5. FL2440驱动添加(3)LCD驱动添加学习笔记
  6. Java从入门到精通——基础篇之JSTL标签
  7. hdu 1018
  8. 第3章Zabbix完整监控
  9. List集合数据太多进行分批,List的subList方法应用
  10. vue2.0 通过v-html指令渲染的富文本无法修改样式的解决方案
  11. win10安装tensorflow-gpu1.13.1+cuda10.0+cudnn7.3.1
  12. 【ASP.NET Core快速入门】(十六)MVC开发:DbContextSeed初始化
  13. JDBC——Java语言连接数据库的标准
  14. 02Hadoop二次排序2
  15. css实现响应式布局的相关内容
  16. linux screen 命令 :离线运行程序
  17. 细菌多位点序列分型(Multilocus sequence typing,MLST)的原理及分型方法
  18. bzoj 4034: [HAOI2015]树上操作 树链剖分+线段树
  19. 关于原子哥ENC28J60网络通信模块接收数据代码的一点疑惑
  20. aws代理

热门文章

  1. 20155319 2016-2017-2 《Java程序设计》第四周学习总结
  2. bzoj1011 遥远的行星
  3. equals和==方法比较(二)--Long中equals源码分析
  4. [备忘]Windows Server 2008 R2部署FTP FileZilla Server防火墙设置
  5. MindMaster安装教程以及激活破解教程
  6. 学习HTML 第一节.小试牛刀
  7. selenium webdriver API详解(三)
  8. 【SpringBoot】集成 Web Flux
  9. 高可用Kubernetes集群-4. kubectl客户端工具
  10. Linux系统网络安装——基于pxe+dhcp+nfs+tftp+kickstart