C++之构造函数与虚析构函数

news/2024/12/5 11:49:55/

文章目录

  • 构造函数为什么不能被设置为虚函数
  • 析构函数为什么可以被设置为虚函数
  • 在什么情况下析构函数必须为虚函数

构造函数为什么不能被设置为虚函数

1.虚函数调用只需要“部分的信息”,即只需要知道函数的接口(函数返回类型,函数名,参数列表),而不需要对象的具体类型,但是构造一个函数的时候,必须知道具体的类型信息。如果你调用一个虚构造函数,编译器不知道你要构造的继承树上的那种类型。

  • 1.构造函数的用途:创建对象,初始化对象中的属性,类型转化
  • 2.再类中定义虚函数就会有一个虚函数表(vftable),对象模型中就就含有一个指向虚表的指针(_vfptr)。在定义对象时构造函数设置虚表指针指向虚函数表
  • 3.使用指针和引用调用虚函数,在编译只需要知道函数接口,运行时指向对象,才能关联到具体对象的虚方法(通过虚函数指针查虚表得到具体对象中的虚方法)
  • 4.构造函数是类的一个特殊成员:
    1)定义对象由系统自动调用构造函数,对象自己是不可以调用构造函数;
    2)构造函数的调用属于静态联编,在编译时就必须知道具体类型的信息
  • 5.如果构造函数可以设置为虚函数,使用指针调用构造函数,如果编译器采用的静态联编,构造函数就不能为虚函数,

http://www.ppmy.cn/news/70352.html

相关文章

Zabbix技术分享——Zabbix unreacheable poller解决思路

Zabbix是一个功能强大的网络监控工具,它可以监控各种网络设备、服务器、应用程序等。Zabbix监控数据的收集和处理通过轮询器进程完成,这些进程运行在Zabbix server和Zabbix proxy上。但是,有时候可能会遇到无法访问轮询器进程的问题&#xff…

前端性能优化:如何提高页面加载速度和用户体验

第一章:介绍 当今互联网时代,网站的性能对于用户体验至关重要。一个快速加载的网页不仅能提高用户的满意度,还能增加页面的转化率。而在前端开发中,性能优化是一个永恒的话题。本篇博客将为大家分享一些关于前端性能优化的技巧和…

MySQL高可用之MHA集群

一、MHA概述 1.1 什么是 MHA MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点故障的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在…

网工考试常用计算公式汇总,赶紧收藏啦!

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 一、单位的换算 1字节(B)8bit 1KB1024字节 1MB1024KB 1GB1024MB 1TB1024GB 通信单位中 K千 , M 百万 计算机单位中 K2^10 , M 2^20 倍数刚好是1.024的…

ThreadLocal八股文

目录 1. 为什么要⽤ ThreadLocal? 2. ThreadLocal 的原理是什么? 3. 为什么⽤ ThreadLocal 做 key? 4. Entry 的 key 为什么设计成弱引⽤? 5. ThreadLocal 真的会导致内存泄露? 6. 如何解决内存泄露问题? 7. T…

基于html+css的图展示71

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

核心案例 | 南京理工大学空地协同编队控制系统建设项目

项目名称:空地协同编队控制系统建设项目 场 地:室内/室外 关 键 词:自主导航与SLAM、集群协同决策、集群控制 南京理工大学核心案例(1) 01 项目背景 本项目通过集群四旋翼无人机、天地协同集群控制开发环境、无人机协同集群控制系统…

交互动态:接触冲击力学(contact impact mechanics)

接触力学(Contact mechanics):研究两物体因受压相触后产生的局部应力和应变分布规律的学科。相互接触的力作用下发生的弹性变形。接触力学是研究在一个或多个点相互接触的固体变形。 冲击力学(impact mechanics):冲击力学是研究物体在瞬间接触或碰撞中的动态响应的力学分…