C++-多态常见试题的总结

news2025/1/21 2:51:17

  关于C++多态的介绍:C++-多态-CSDN博客

1.

         A.只有类的成员方法才可以被virtual修饰,其他的函数并不可以

        

        B.正确

        C.virtual关键字只在声明时加上,在类外实现时不能加

        D.static和virtual是不能同时使用的

2.

        A.多态分为编译时多态和运行时多态,也叫早期绑定和晚期绑定

        B.编译时多态是早期绑定,主要通过重载实现

        C.模板属于编译时多态,故错误

        D.运行时多态是动态绑定,也叫晚期绑定

3.

        A.正确,重写又叫覆盖,重定义又叫隐藏

        B.重载的条件第一个就是在同一个作用域中

        C.重载的要求是在同一个作用域中两个同名函数的参数个数不同,参数类型不同,参数顺序不同。 

           重写是在继承的体系中,虚函数 + 三同

           重定义是在继承的体系中,在派生类中出现同基类同名的成员方法,就会对基类中同名的进行隐藏也就是重定义。

        D.重写又称覆盖,和重定义不同,在继承的体系中,基类和派生类中的同名函数不是重写就是重定义。

        E.同D。

        F.重写需要虚函数所以确实比重定义的条件更加严格。

        G.6.

4.

        A.使用父类对象调用的方法永远是父类的方法

        B.正确

        C.重载不涉及子类

         D.

5.

 

        A.友元函数不属于成员函数,不能成为虚函数

        B.静态成员函数就不能设置为虚函数

        C.静态成员函数与具体对象无关,属于整个类,核心关键是没有隐藏的this指针,可以通过类名::成员函数名 直接调用,此时没有this无法拿到虚表,就无法实现多态,因此不能设置为虚函数

        D.尤其是父类的析构函数强力建议设置为虚函数,这样动态释放父类指针所指的子类对象时,能够达到析构的多态

6.

        A.必须是父类的函数设置为虚函数

        B.必须通过父类的指针或者引用才可以,子类的不行

        C.不是在编译期,而应该在运行期间,编译期间,编译器主要检测代码是否违反语法规则,此时无法知道基类的指针或者引用到底引用那个类的对象,也就无法知道调用那个类的虚函数。在程序运行时,才知道具体指向那个类的对象,然后通过虚表调用对应的虚函数,从而实现多态。

        D.正确,实现多态是要付出代价的,如虚表,虚表指针等,所以不实现多态就不要有虚函数了

7.

 

        A.错误,构成重写是子类重写父类的virtual函数,

        B.f3构成重写,重写时子类可以不要求加virtual关键字

        C. 选择题一定要扣字眼,题目前半句说的是基类引用 引用了子类对象,但是后半句调用虚函数时,说的是基类的对象调用f2,通过对象调用时编译期间就直接确定调用那个函数了,不会通过虚表以多态方式调用

        D.正确

8.

        A.多继承的时候,就会可能有多张虚表

        B.父类对象的虚表与子类对象的虚表没有任何关系,这是两个不同的对象

        C.虚表是在编译期间生成的

        D.一个类的不同对象共享该类的虚表,可以自行写代码验证之

9.

         虽然子类重写了父类的虚函数,但只要是用对象去调用,则只能调用相对类型的方法,故B正确

10.

        分析:new B时先调用父类A的构造函数,执行test()函数,在调用func()函数,由于此时还处于对象构造阶段,多态机制还没有生效,所以,此时执行的func函数为父类的func函数,打印0,构造完父类后执行子类构造函数,又调用test函数,然后又执行func(),由于父类已经构造完毕,虚表已经生成,func满足多态的条件,所以调用子类的func函数,对成员m_iVal加1,进行打印,所以打印1, 最终通过父类指针p->test(),也是执行子类的func,所以会增加m_iVal的值,最终打印2, 所以答案为C 0 1 2

11.

        A.父类对象和子类对象的前4字节都是虚表地址

        B.A类对象和B类对象前4个字节存储的都是虚表的地址,只是各自指向各自的虚表

        C.不相同,各自有各自的虚表

        D.A类和B类不是同一类内容不同

 12.

        A.D类有几个父类,如果父类有虚函数,则就会有几张虚表,自身子类不会产生多余的虚表,所以只有2张虚表

        B.正确

        C.子类自己的虚函数只会放到第一个父类的虚表后面,其他父类的虚表不需要存储,因为存储了也不能调用

        D.错误

13.

 

        A.正确

        B.虽然子类函数为私有,但是多态仅仅是用子类函数的地址覆盖虚表,最终调用的位置不变,只是执行函数发生变化

        C.不强制也可以直接赋值,因为赋值兼容规则作出了保证

        D.编译正确

 

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

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

相关文章

Linux详解——安装JDK

目录 一、下载jdk 二、tar包安装 三、rpm包安装 一、下载jdk 1.下载jdk https://www.oracle.com/technetwork/java/javase/downloads/index.html 2.通过CRT|WinSCP工具将jdk上传到linux系统中 二、tar包安装 # 1.将JDK解压缩到指定目录 tar -zxvf jdk-8u171-linux…

ubuntu系统进入休眠后cuda初始化报错

layout: post # 使用的布局(不需要改) title: torch.cuda.is_available()报错 # 标题 subtitle: ubuntu系统进入休眠后cuda初始化报错 #副标题 date: 2023-11-29 # 时间 author: BY ThreeStones1029 # 作者 header-img: img/about_bg.jpg #这篇文章标题背…

大杀四方,华为组建智能车大联盟 | 百能云芯

最近,华为和一系列汽车公司合资的新公司迎来新的进展。除了与长安汽车的合作外,据传华为已经邀请奇瑞、赛力斯、北汽以及江淮汽车入股新公司,这将使华为成为中国智能汽车平台的重要主导者。 根据澎湃新闻的报道,知情人透露&#x…

装饰模式学习

背景 首先明确装饰模式是结构型设计模式的一种,但是结构型设计模式有什么特点呢。装饰模式的业务是给人穿衣服。 步骤 历史发展 版本1:只有一个Person类,这个类由三部分构成,本身的有参构造函数,给当前对象传不同衣…

外包干了5个月,技术退步明显.......

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

信创之国产浪潮电脑+统信UOS操作系统体验8:安装Docker并进行测试验证scratch镜像

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、前言 今日在进行Docker容器相关知识的学习,不过学习环境都不是基于统信UOS操作系统的,为了实验,老猿觉得手头国产浪潮电脑统信UOS操作系统就是原生的linux操作系统&a…

LiveData源码分析,粘性事件,数据倒灌

最近面试天天被虐,有个问题问的很频繁,就是 LiveData 的数据倒灌问题怎么解决。 我不知道有多少人连数据倒灌是什么都没听过的,更不要说什么解决方案啦。 我按照我的理解描述一下数据倒灌:就是设置了 LiveData 的数据之后&#…

“rhdf5filters.so’ not found when install ‘glmGamPoi‘ package

在R中安装glmGamPoi包的时候,出现了如下报错: install.packages(glmGamPoi) 尝试方案一: sudo apt install pkg-config libhdf5-dev安装lighdf5-dev,并将安装路径链接至usr/lib/文件。 locate rhdf5filters.so sudo ln -s /hom…

武汉建筑类初级职称助理工程师电子版证书申报

武汉建筑类初级职称助理工程师电子版证书申报 目前大家较为关注的是湖北省的助理工程师/初级职称评审出来之后是否可以网上查询。市面上还有一些地级市的区人社职改办出纸质版证书,职称证书、红头文件、评审表齐全,但是查询方式还是老一套的查询方式&am…

三勾商城新功能发布-多包裹订单

在不同场景下,商家可能需一笔订单需要分成多个包裹、分批发货,来看看怎么操作吧。 前端截图 后台截图 三勾小程序商城基于springbootelement-plusuniapp打造的面向开发的小程序商城,方便二次开发或直接使用,可发布到多端&#xf…

职场人最好的姿势是仰卧起坐

曾经看过一个回答说“职场人最好的姿势是仰卧起坐”。 卷累的就躺,休息好了再继续卷,卷是常态,“仰卧起坐”也好,“卷的姿势”也好,都是在反复“卷起”的过程中寻找一些舒适和平衡,“卷”得更持久罢了.....…

Linux 进程(一)

1 操作系统 概念:任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括 内核(进程管理,内存管理,文件管理,驱动管理) 其他程序(例…

LeetCode(41)单词规律【哈希表】【简单】

目录 1.题目2.答案3.提交结果截图 链接: 单词规律 1.题目 给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连…

Elasticsearch 快照如何工作?

作者:Lutf ur Rehman Elastic 提供许多由讲师指导的面对面和虚拟现场培训以及点播培训。 我们的旗舰课程是 Elasticsearch 工程师、Kibana 数据分析和 Elastic 可观测性工程师。 所有这些课程都会获得认证。有关这些课程的详细介绍,请参考我之前的文章 “…

20.Oracle11g中的触发器

oracle11g中的触发器 一、触发器的概述1、什么是触发器2、触发器的类型3、触发器的组成4、触发器的作用 二、触发器的创建语法1、创建语法2、数据库启动触发器3、 用户登录触发器: 三、对触发器的基本操作点击此处跳转下一节:21.Oracle的程序包(Package)…

QNX下多窗口叠加融合方案

目的:QNX下EGL多窗口叠加融合方案 环境: 系统:QNX 环境:8155/8295问题: EGL有时候在同一个进程中因为引入不同的功能,在不同的线程中进行窗口的绘制和融合,QNX下的融合方案,实测使…

夸克大模型助力学术科研提效 四大优势提升知识正确性

当严谨的学术科研与创新的大模型技术结合在一起,会擦出什么样的火花?日前,夸克大模型甫一推出便以优秀的性能成为国产大模型中的“学霸”。在中国科学技术协会近期主办的“大模型应用场景研讨会”上,夸克大模型在快速阅读、创作润…

求臻医学胃癌关爱日:美味的高“盐”值杀手

胃癌的发病率具有广泛的地域差异,在东南亚国家尤为高发。韩国是胃癌发病率排名第一的国家,其次为日本,中国紧随其后,由于中国人口基数大,其绝对患胃癌人数为全球第一,每年有100多万新诊断患者,其…

nvm for windows使用与node/npm/yarn的配置

1 下载 nvm for windows download – github 下拉到Assets, 下载.exe文件 2 安装 安装到如下文件夹中 目录可以自己选, 可以换别的名字, 自己记住即可 新手建议全部看完再进行个人配置, 或者使用与博主一致的路径 D:\DevelopEnvironment\nvm3 配置nvm使用的镜像 node_mir…

wvp 视频监控平台抓包分析

抓包时机 下面的抓包时机是抓包文件最新,但是最有用的包 选择网卡开始抓包 如果之前已经选择网卡,直接开始抓包 停止抓包 重新抓包 sip播放过程分析 过滤条件 tcp.port 5060 and sip 可以看到有这些包 选择任何一个 ,戍边右键--追踪流--…