当前位置: 首页 > news >正文

长江存储嵌入式面试题及参考答案

构造函数、析构函数可以为虚函数吗,为什么?

构造函数最好不要是虚函数。原因如下:

从对象的生命周期角度来看,虚函数的调用是通过虚函数表(vtable)来实现的。而在构造函数执行的时候,对象还没有完全构造好,vtable 可能还没有被正确地初始化。如果构造函数是虚函数,在调用构造函数时就去查找虚函数表,可能会导致未定义的行为。并且构造函数的主要作用是初始化对象的数据成员,在派生类对象构造时,会先调用基类的构造函数来初始化基类部分的数据成员。如果基类构造函数是虚函数,会使构造过程变得非常复杂和难以理解。

析构函数可以是虚函数,而且在很多情况下应该是虚函数。当通过基类指针删除派生类对象时,如果析构函数不是虚函数,那么只会调用基类的析构函数,导致派生类中申请的资源(如动态分配的内存)无法被正确释放,从而造成内存泄漏等问题。当析构函数是虚函数时,通过基类指针删除对象,就会根据对象的实际类型(是基类对象还是派生类对象)调用相应的析构函数。例如,有一个基类 Base 和一个派生类 Derived,当使用 Base *p = new Derived (); 然后 delete p; 时,如果 Base 的析构函数不是虚函数,只会调用 Base 的析构函数,但

http://www.lryc.cn/news/487301.html

相关文章:

  • WordPress设置自动更新CSS版本号
  • 【Qt聊天室】客户端实现总结
  • 服务器数据恢复—raid5阵列故障导致上层系统分区无法识别的数据恢复案例
  • mysql bin log分析
  • 深入理解 Vue 3 中的 emit
  • #lwIP 的 Raw API 使用指南
  • Elasticsearch开启认证及kibana密码登陆
  • 【论文阅读】Large Language Models for Equivalent Mutant Detection: How Far Are We?
  • vue2 面试题带答案,万字总结
  • git的常用用法(最简精华版)
  • 哥德巴赫猜想渐行渐远
  • Spring Boot应用开发实战:构建高效、可维护的Web应用
  • keep-alive多级页面缓存实现
  • ks 小程序sig3
  • 图论之构造完全图
  • RDD触发算子:一些常用的触发算子(count、foreach、saveAsTextFile、first)
  • 搭建RAGFlow
  • css中的box-sizing,记录
  • 使用useCallback引发对闭包的理解
  • gvim添加至右键、永久修改配置、放大缩小快捷键、ctrl + c ctrl +v 直接复制粘贴、右键和还原以前版本(V)冲突
  • 腾讯云-COS
  • 蓝桥杯每日真题 - 第16天
  • 基因组之全局互作热图可视化
  • 基于Lora通讯加STM32空气质量检测WIFI通讯
  • STM32 极速入门第一天基础拓展 驱动i2c屏幕 ( 使用PlatformIO开发STM32单片机 )
  • 【WPF】Prism学习(五)
  • RabbitMQ的基本概念和入门
  • Shell脚本6 -- 条件判断if
  • 经验笔记:从生成 SSH 密钥到成功连接测试(以Gitee为例)
  • Object.defineProperty和响应式