多态的总结

news2025/5/25 15:52:24

什么是多态?

答:多态是多种形态,是为了完成某种行为时,不同对象会产生不同的形态(结合车票例子解释)

2. 什么是重载、重写(覆盖)、重定义(隐藏)?

答:重载的条件是:在同一作用域下,同名函数的(参数个数,参数类型,参数顺序不同)构成重载。

而重写的条件是:在不同作用域下,(函数名,返回类型,参数列表)均相同,并且是虚函数构成的,叫做重写

最后,重定义只要求不同作用域下,函数名相同的函数叫做重定义。两个基类与派生类的同名函数,不是重写就是重定义

3. 多态的实现原理?

答:多态分为静态多态(编译期间)和动态多态(运行期间)

而静态多态:传不同参数。调用不同函数。自动识别类型,根据函数名修饰规则(比如像函数重载,编译时进行匹配,过了之后,如果走到链接的时候,通过函数名修饰规则去找)去寻找对应的变量

而动态多态:传不同对象,调不同函数。(继承中虚函数重写+父类指针调用)就通过生成虚函数表,做到指向哪个类,就去哪个类的对象的虚函数表找。即指向谁就调用谁

4. inline函数可以是虚函数吗?

答:可以,不过编译器就忽略inline属性,这个函数就不再是inline,因为虚函数要放到虚表中去。

5. 静态成员可以是虚函数吗?

答:不能,因为静态成员函数没有this指针,使用类型::成员函数的调用方式无法访问虚函数表,所以静态成员函数无法放进虚函数表。

6. 构造函数可以是虚函数吗?

答:不能,因为对象中的虚函数表指针是在构造函数初始化列表阶段才初始化的

形象地说就是:先有鸡还是先有蛋?调构造函数,如果是虚函数,虚函数的目的就是实现多态,那么实现要多态,你连虚表都没有,你去哪里找虚函数地址?因此对象初始化好了才有虚表,通过虚表找虚函数。

7. 析构函数可以是虚函数吗?什么场景下析构函数是虚函数?

答:可以,并且最好把基类的析构函数定义成虚函数。基类只要定义了虚函数,那么派生类的析构函数都会与基类的析构函数构成重写,其中它的内部原理是统一变成一个叫destructor的函数名。来保证对象的正确销毁,做到先释放派生类,再去释放基类的顺序。

8. 对象访问普通函数快还是虚函数更快?

答:首先得分情况:如果是普通对象,是一样快的。如果是指针对象或者是引用对象,则调用的普通函数快,因为构成多态,运行时调用虚函数需要到虚函数表中去查找。

9. 虚函数表是在什么阶段生成的,存在哪的?

答:虚函数表是在编译阶段就生成的,一般情况下存在代码段(常量区)的。(+多态那篇文章里的证明)

10. C++菱形继承的问题?虚继承的原理?

答:C++的菱形继承会存在二义性和冗余性。

而虚继承就是为了解决上面的问题的:通过一个虚基表,虚基表存的是基类偏移量的表,通过虚基表计算变量在对象里面的地址,再随着地址去访问

11. 什么是抽象类?抽象类的作用?

答:抽象类就是在虚函数后面写=0;抽象类强制重写了虚函数,另外抽象类体现出了接口继承关系。

最后到了本次鸡汤:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2385441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 高分辨率屏幕适配指南:解决界面过小、模糊错位问题

🖥️ Windows 高分辨率屏幕适配指南:解决界面过小、模糊错位问题 摘要: 在使用高分辨率屏幕时,许多老旧的桌面软件会出现界面显示异常的问题,例如窗口过小、控件错位、文字模糊等。本文提供一套通用解决方案&#xff0…

K8S-statefulset-mysql-ha

需求 实现一个HA mysql,包括1个master,2个slave。在K8S上已statefulset部署。 mysql HA原理 略 K8S环境需要解决的问题 1、由于使用同一个statefulset配置,因此需要考虑master和slave使用不同的cnf文件。 2、不同pod之间文件的传输 3、…

【方案分享】展厅智能讲解:基于BLE蓝牙Beacon的自动讲解触发技术实现

【方案分享】展厅智能讲解:基于BLE蓝牙Beacon的自动讲解触发技术实现 让观众靠近展品即可自动弹出讲解页面,是智能展厅的核心功能之一。本文将从软硬件技术、BLE Beacon原理、微信小程序实现、优劣对比与拓展方案五个维度,系统讲解“靠近展台…

web常见的攻击方式有哪些?如何防御?

Web常见攻击方式及防御策略 SQL注入 (SQL Injection) 详细解析: SQL 注入是一种利用应用程序未正确验证用户输入的漏洞,通过向应用传递恶意 SQL 查询来操纵数据库的行为。这种攻击可能导致敏感数据泄露、篡改或删除。 步骤: 攻击者找到可接受动态参数的应用程序…

力扣:《螺旋矩阵》系列题目

今天做了一下螺旋矩阵主题的一系列题目 即力扣中的相似题目 还是有所感悟的 接下来一一回顾: 第一题: 59. 螺旋矩阵 II - 力扣(LeetCode) 这题让我们生成一个正方形的矩阵,注意是正方形,不是长方形&a…

发电厂进阶,modbus TCP转ethernet ip网关如何赋能能源行业

案例分享:稳联技术modbus TCP转ethernet ip网关wl-abc004赋能,发电厂自动化改造,推动能源行业智能化升级 随着全球能源结构转型和“双碳”目标的推进,传统发电厂(如火电、水电、生物质发电)正面临严峻挑战&…

深入了解linux系统—— 操作系统的路径缓冲与链接机制

前言 在之前学习当中,我们了解了被打开的文件是如何管理的;磁盘,以及ext2文件系统是如何存储文件的。 那我们要打开一个文件,首先要先找到这个文件,操作系统又是如何去查找的呢? 理解操作系统搜索文件 …

华为2025年校招笔试真题手撕教程(一)

一、题目 输入: 第一行为记录的版本迭代关系个数N,范围是[1,100000]; 第二行到第N1行:每行包含两个字符串,第一个字符串为当前版本,第二个字符串为前序版本,用空格隔开。字符串包含字符个数为…

第9.2讲、Tiny Decoder(带 Mask)详解与实战

自己搭建一个 Tiny Decoder(带 Mask),参考 Transformer Encoder 的结构,并添加 Masked Multi-Head Self-Attention,它是 Decoder 的核心特征之一。 1. 背景与动机 Transformer 架构已成为自然语言处理(NLP…

基于PCRLB的CMIMO雷达网络多目标跟踪资源调度

针对分布式组网CMIMO雷达多目标跟踪(MTT)场景,博客分析了一种目标-雷达匹配方案与功率联合优化算法。在采用分布式组网融合架构的基础上,推导包含波束和功率分配的后验克拉美罗界(PCRLB)。随后,将该效用函数结合CMIMO雷达系统资源&#xff0c…

AtCoder Beginner Contest 407(ABCDE)

A - Approximation 翻译&#xff1a; 给你一个正整数 A 和一个正奇数 B。 请输出与实数 的差最小的整数。 可以证明&#xff0c;在约束条件下&#xff0c;这样的整数是唯一的。 思路&#xff1a; 令。比较来判断答案。 实现&#xff1a; #include<bits/…

VILT模型阅读笔记

代码地址&#xff1a;VILT Abstract Vision-and-Language Pre-training (VLP) has improved performance on various joint vision-andlanguage downstream tasks. Current approaches to VLP heavily rely on image feature extraction processes, most of which involve re…

掌握 npm 核心操作:从安装到管理依赖的完整指南

图为开发者正在终端操作npm命令&#xff0c;图片来源&#xff1a;Unsplash 作为 Node.js 生态的基石&#xff0c;npm&#xff08;Node Package Manager&#xff09;是每位开发者必须精通的工具。每天有超过 1700 万个项目通过 npm 共享代码&#xff0c;其重要性不言而喻。本文…

OpenCV CUDA模块特征检测与描述------一种基于快速特征点检测和旋转不变的二进制描述符类cv::cuda::ORB

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::ORB 是 OpenCV 库中 CUDA 模块的一部分&#xff0c;它提供了一种基于快速特征点检测和旋转不变的二进制描述符的方法&#xff0c;用于…

Awesome ChatGPT Prompts:释放AI对话潜力的开源利器

项目概览 Awesome ChatGPT Prompts 是由土耳其开发者 Fatih Kadir Akın 发起的开源项目,托管于 GitHub,旨在通过精心设计的提示词模板(Prompts)优化用户与 ChatGPT 的交互体验。项目以 Markdown 和 CSV 格式管理模板,无需复杂编程语言,但需文本处理能力,目前已在 GitH…

PP-YOLOE-SOD学习笔记2

一、解析X-Anylabeling标注后的json格式问题 最近在使用自动标注工具后json格式转化过程中&#xff0c;即标注框的四点坐标转换为两点坐标时&#xff0c;发现json格式的四点顺序是按顺时针方向开始的&#xff0c;那么在转换其实就是删除2、4坐标或者1、3坐标即可。 二、数据集…

算法学习——从零实现循环神经网络

从零实现循环神经网络 一、任务背景二、数据读取与准备1. 词元化2. 构建词表 三、参数初始化与训练1. 参数初始化2. 模型训练 四、预测总结 一、任务背景 对于序列文本来说&#xff0c;如何通过输入的几个词来得到后面的词一直是大家关注的任务之一&#xff0c;即&#xff1a;…

win10使用nginx做简单负载均衡测试

一、首先安装Nginx&#xff1a; 官网链接&#xff1a;https://nginx.org/en/download.html 下载完成后&#xff0c;在本地文件中解压。 解压完成之后&#xff0c;打开conf --> nginx.config 文件 1、在 http 里面加入以下代码 upstream GY{#Nginx是如何实现负载均衡的&a…

2025电工杯数学建模B题思路数模AI提示词工程

我发布的智能体链接&#xff1a;数模AI扣子是新一代 AI 大模型智能体开发平台。整合了插件、长短期记忆、工作流、卡片等丰富能力&#xff0c;扣子能帮你低门槛、快速搭建个性化或具备商业价值的智能体&#xff0c;并发布到豆包、飞书等各个平台。https://www.coze.cn/search/n…

【日志软件】hoo wintail 的替代

hoo wintail 的替代 主要问题是日志大了以后会卡有时候日志覆盖后&#xff0c;改变了&#xff0c;更新了&#xff0c;hoo wintail可能无法识别需要重新打开。 有很多类似的日志监控软件可以替代。以下是一些推荐的选项&#xff1a; 免费软件 BareTail 轻量级的实时日志查看…