【C++ 面试 - 面向对象】每日 3 题(八)

news2024/9/21 5:37:00

✍个人博客:Pandaconda-CSDN博客

📣专栏地址:http://t.csdnimg.cn/fYaBd

📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

22. 如何判断一个 对象属于哪个类?

方法 1: 采用 typeid() 函数进行判断。(缺点:当存在继承,并且子类指针赋值给父类指针时,此时判断的对象类型为父类型,而不是子类类型)

方法 2:最好的方法是定义虚函数返回类类型。在运行时类型识别,最简单的办法就是所有的类(父类和子类)实现一个虚方法返回类名字,根据返回类名字再利用 typeid() 进行判断。

23. 虚函 数表是针对类的还是针对对象的?同一个类的两个对象的虚函数表是怎么维护的?

虚函数表是针对类的,类的所有对象共享这个类的虚函数表,因为每个对象内部都保存一个指向该类虚函数表的指 针 vptr ,每个对象的 vptr 的存放地址都不同,但都指向同一虚函数表。

24. 为 什么 C++ 的 member function template 不能是 virtual 的?

问题的意思是,为什么在 C++ 里面,一个类的成员函数不能既是 template 又是 virtual 的。比如,下面的代码编译会报错:

  

这个问题涉及到一点 C++ 的实现机制 (C++ 中模板是如何工作的、虚拟函数是如何实现的、编译器和链接器如何从源代码生成可执行文件),所以很少人能一下子答上来。

具体理由如下:

因为 C++ 的编译与链接模型是 “分离” 的 (至少是部分原因吧)。

  • 从 Unix/C 开始,一个 C/C++ 程序就可以被分开编译,然后用一个 linker 链接起来。这种模型有一个问题,就是各个编译单元可能对另一个编译单元一无所知。

  • 一个 function template 最后到底会被 instantiate 为多少个函数,要等整个程序 (所有的编译单元) 全部被编译完成才知道。

  • 同时,virtual function 的实现大多利用了一个 “虚函数表” 的东西,这种实现中一个类的内存布局 (或者说虚函数表的内存布局) 需要在这个类编译完成的时候就被完全确定。

所以当一个虚拟函数是模板函数时,编译器在编译时无法为其生成一个确定的虚函数表条目,因为模板函数可以有无数个实例。但是编译时无法确定需要调用哪个特定的模板实例。因此,C++ 标准规定 memberfunction 不能既是 template 又是 virtual 的。

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

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

相关文章

P(查准率) R(查全率) AP mAP最通俗准确的讲解

学习YOLO的过程中遇到了mAP指标,在网上看了很多关于mAP的讲解,不是很理解其计算过程,于是总结了各个帖子及自己的理解,给出mAP计算的规律,这样就能很好的记忆。 目录 一、P(精确率)、R&#x…

I2C通信协议(软件I2C和硬件I2C)

相比于之前学的异步全双工且需要两条通信线的串口通信,I2C则为同步半双工,仅需要一条通信线,全双工与半双工区别如下: 全双工(Full Duplex)半双工(Half Duplex)数据传输方式同时双向…

linux 磁盘满了,程序运行失败,如何处理?df -h

场景:紧急呼救,上传图片失败了。我一脸懵,服务器这是又咋地了,别邪乎姐姐,姐姐胆子小啊。 一、寻找问题原因 1、OSS出问题了? 然后我尝试了 IOS 的APP是没问题的,Android提示上传失败&#xf…

Excel技巧(一)

快捷键技巧 原文链接 选取某一行的数据直到最后一行:【CTRL SHIFT ↓ 】或者选取一行后按住SHIFT键,双击下边线就可以快速选取区域。 如果表格中有多行空行,可以先按CTRL SHIFT END,再按CTRL SHIFT 上下键调整,…

CodeLLDB的快速安装

1、CodeLLDB很难安装 ‌‌CodeLLDB插件是一个基于‌LLDB的调试器插件,专为‌Visual Studio Code设计,旨在提供类似于传统集成开发环境(IDE)的调试体验。‌ 它支持‌C、‌C和‌Objective-C程序的调试,包括设置断点、查…

这4款工具可以教会你如何用AI写ppt.

随着AI工具的盛行,AI办公工具也组建越来越多,我们可以用AI帮助生成各种文档,包括PPT。今天我就帮大家总结一波专业又好用的ai生成PPT的工具,一共有4款。 1、笔灵ppt 直通车:https://ibiling.cn/ppt-zone 首先要说的这…

颠茄和草本曼陀罗参考基因组(茄科)

茄科的代表性物种之二:颠茄和草本曼陀罗 来源文献 Revealing evolution of tropane alkaloid biosynthesis by analyzing two genomes in the Solanaceae family 推荐 惕佫酰假托品合酶的发现-文献精读28 参考链接 https://ngdc.cncb.ac.cn/gwh/Assembly/29467/s…

【Python零基础】Python中的函数

文章目录 前言一、函数定义二、传递实参三、返回值四、传递列表五、传递任意数量实参六、把函数存储在模块中七、函数定义指南总结 前言 在Python中,函数是一段可重用的代码块,用于执行特定任务。函数可以通过定义关键字 def 来创建,并且通常…

网络安全-防火墙安全策略初认识

文章目录 前言理论介绍1. 安全策略1.1 定义:1.2 关键术语: 2. 防火墙状态监测 实战步骤1:实验环境搭建步骤2:配置实现 总结1. 默认安全策略2. 自定义安全策略3. 防火墙状态会话表 前言 who:本文主要写给入门防火墙的技…

容器篇(Java - 集合)

目录 有意者可加 一、集合 1. 出现的背景 2. 带大家具体了解下集合 3. 集合带来了哪些好处 4. 集合的特点 5. 集合和数组对比 6. 数组和集合应用场景(对比) 6.1 数组的应用场景 1. 存储一组数据 2. 图像处理 3. 矩阵运算 4. 缓存 6.2 集合…

基于Python的mediapipe和opencv的人体骨骼、人体姿态关键点的实时跟踪项目

随着计算机视觉技术的发展,人体姿态估计在虚拟现实、运动分析、人机交互等领域得到了广泛应用。传统的姿态估计方法通常依赖于深度学习模型,需要大量的计算资源。而 Google 开发的 MediaPipe 框架则提供了高效且易于使用的解决方案,它可以在各…

78、 ansible----playbook

一、ansible模块 11、防火墙和网络模块: [roottest1 ~]# ansible 192.168.168.23 -m iptables -a chainINPUT protocolICMP source192.168.168.22 jumpREJECT -b ##-b后台,拒绝[roottest3 ~]# yum -y install nginx[roottest3 ~]# systemctl restart …

论文合集下载丨第十九届全国人机语音通讯学术会议

2024年8月15日至18日,第十九届全国人机语音通讯学术会议(NCMMSC)暨CCF语音对话与听觉专委会2024年学术年会在新疆乌鲁木齐成功召开。 会议论文集下载方式在文末 👇 全国人机语音通讯学术会议作为语音技术领域内的专家、学者及科研…

为什么需要文献综述模板和创建文献综述技巧

为什么需要文献综述模板? 文献综述模板可以作为特定主题的指南。如果您的时间有限,无法进行更多研究,文献综述大纲示例可以为您提供帮助,因为它可以为您提供您打算研究的内容的概述。 甚至各个领域的专业人士也依赖文学评论来了解…

易灵思FPGA-Trion的MIPI设置使用

一、MIPI简介? 不需要各种资料上一大堆对物理层MIPI传输协议的讲解,实话说,我也不是特别能吃透其中的时序,所以不多研究;所有的FGPA如果带MIPI ,那就只研究控制器就行了 ,没必要舍近求远 二、硬…

NVM安装管理node.js版本(简单易懂)

一、前言 1.1 简介 NVM(Node Version Manager)是 node.js 的版本管理器,用 shell 脚本切换机器中不同版本的 nodejs。 Nodejs为什么需要多个版本? 有经验的开发者可能遇到过,某个依赖包明确nodejs是某个版本&#…

深度学习--RNN以及RNN的延伸

循环神经网络(Recurrent Neural Network, RNN)是一类能够处理序列数据的神经网络,在自然语言处理、时间序列分析等任务中得到了广泛应用。RNN能够通过其内部的循环结构,捕捉到序列中前后项之间的关系。下面我将从原理、作用、应用…

【AI绘画】Midjourney提示词详解:精细化技巧与高效实践指南

文章目录 💯Midjourney提示词基础结构1 图片链接1.1 上传流程 2 文字描述3 后置参数 💯Midjourney提示词的文字描述结构全面剖析1 主体主体细节描述2 环境背景2.1 环境2.2 光线2.3 色彩2.4 氛围 3 视角4 景别构图5 艺术风格6 图片制作方法7 作品质量万能…

振动分析-20-振动三要素的理解及决定设备分析水平的因素

1 对频谱分析的定位 一般咨询一个振动问题,很多人往往是要求把各种频谱贴上来看看,却很少有人问,振动过程、检修经历、设备结构、振动位置、振动方向、负荷关系、油温变化、转速影响等等。 刚刚接触振动检测时,对有关频谱分析方面资料如饥似渴,对于早期从事振动诊断的朋…

CentOS 7使用RPM安装MySQL

MySQL是一个开源的关系型数据库管理系统(RDBMS),允许用户高效地存储、管理和检索数据。它被广泛用于各种应用,从小型的web应用到大型企业解决方案。 MySQL提供了丰富的功能,包括支持多个存储引擎、事务能力、数据完整性…