C++ -- 每日选择题 -- Day2

第一题

1. 下面代码中sizeof(A)结果为()

#pragma pack(2)
class A
{int i;union U{char str[13];int i;}u;void func() {};typedef char* cp;enum{red,green,blue}color;
};

A:20

B:21

C:22

D:24

答案及解析 C

本题考查的是如何计算类所占空间大小,union(联合体)和enum(枚举类型)的空间计算;

相关博客:C/C++内存对齐规则(结构体、联合体、类)-CSDN博客

首先我们来梳理一下:

1. 只算成员变量的大小,不算成员函数;

2. typedef只是对类型重定义,没有开空间,也不用算;

3. 需要算的有

int i;

union;

enum;

第一步:算int i;我们首先要看对齐数是多少

上面的#pragma pack(2)是把默认对齐数设定为2

对齐数 = 默认对齐数和成员本身大小的较小值

所以int i的对齐数为2,但是每个都是从偏移量0的位置开始,然后占据自身大小的字节;

第二步:计算union的大小;

算union的大小,有两个原则

1. union联合体的大小至少是最大成员的大小

2. 联合体的大小不是最大对齐数的整数倍的时候,要扩大到最大对齐数的整数倍;

所以union中的char数组的对齐数为1,int的对齐数为2;

最后union所占空间为14

第三步:计算enum枚举类型的大小,记住枚举类型大小就是4字节,所以跟默认对齐数比较之后,对齐数为2;

第二题

2. 使用重载函数编程序的目的是()

A:使用相同的函数名调用功能相似的函数

B:共享程序代码

C:提高程序的运行速度

D:节省存储空间

答案及解析 A

A:正确:重载函数写出来的目的就是为了完成不同类型却相同的功能;比如你要实现个加法函数,肯定会有很多类型,我们就需要函数重载;

B:错误:不可以共享代码

C:错误:都是调用函数,说白了代码都一样,不会提高速度

D:错误:不会节省空间

第三题

3. 下列运算符重载函数中,属于友元函数的是()

A:Base operator+(Base);

B:Base operator--(Base);

C:Base operator&&(Base, Base);

D:Base operator++(Base,int);

答案及解析 BCD

在正常的成员函数中,会有一个隐藏的this指针,作为成员函数的第一个参数,但是有的时候,我们是不需要this指针作为函数的参数的;这个时候友元函数就出现了;

A:+运算符,是需要两个操作数的,A选项显式地给了一个Base对象,然后有一个隐藏的this指针;满足+运算符的语法要求;

B:前置--运算符,只需要一个操作数,所以B的函数必须是友元函数才能实现;

C:&&运算符,需要两个操作数,B选项中显式地传了两个参数作为操作数,所以也不需要this指针了;

D:后置++运算符,需要一个操作数,后置++在函数参数这里是有个int来区分的,带int的就是后置,不带的就是前置;所以这里显式传了一个参数作为操作数,不需要this,就为友元;

第四题

4. 下面关于C++缺省参数描述错误的是( ) 【多选】

A.缺省参数是声明或定义函数时为函数的参数指定一个默认值.

B.在调用有缺省参数的函数时,如果没有指定实参则采用该默认值,否则使用指定的实参

C.C和C++都支持缺省参数

D.全缺省就是参数全部给缺省值,半缺省就是缺省一半的值

答案及解析 C D

A:正确,缺省参数就是在声明或者定义的时候给函数参数一个缺省值;

B:正确,缺省参数就是为了我们没有给指定的实参时,给形参提供缺省值;

C:错误,C不支持,缺省参数是C++的;

D:错误,全缺省是所有参数都有缺省值,半缺省是有参数有缺省值,有的没有

第五题

5. 以下不是double compare(int,int)的重载函数的是( )

A.int compare(double,double)

B.double compare(double,double)

C.double compare(double,int)

D.int compare(int,int)

答案及解析 D

重载函数:参数的类型不同,参数个数不同,跟返回值无关;

A、B、C为重载函数

D不是,因为参数类型相同,个数相同;

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssm+vue的仓库在线管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的仓库在线管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三…

游戏反Frida注入检测方案

在游戏安全对抗过程中,有不少外挂的实现基于对游戏内存模块进行修改,这类外挂通常会使用内存修改器,除此之外,还有一种门槛相对更高、也更难检测的「注入挂」。 据FairGuard游戏安全数据统计,在游戏面临的众多安全风险…

Apipost推出IDEA插件,代码写完直接调试

IDEA是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件:Api…

【软件测试】白盒测试和黑盒测试

一、软件测试基本分类 一般地,我们将软件测试活动分为以下几类:黑盒测试、白盒测试、静态测试、动态测试、手动测试、自动测试等等。 黑盒测试 黑盒测试又叫功能测试、数据驱动测试或给予需求规格说明书的功能测试。这种测试注重于测试软件的功能性需…

python开发之个微批量删除好友

简要描述: 删除联系人 请求URL: http://域名地址/delContact 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wI…

探索前端设计的新境界——介绍IVueUI工具助力Vue页面设计

在快速发展的前端领域,Vue.js作为一款渐进式JavaScript框架,一直备受开发者喜爱。然而,在Vue前端开发的旅程中,页面设计常常是一个不可避免的挑战。今天,我要向大家介绍一款令Vue前端开发者受益匪浅的工具——www.ivue…

【微服务】java 规则引擎使用详解

目录 一、什么是规则引擎 1.1 规则引擎概述 1.2 规则引擎执行过程 二、为什么要使用规则引擎 2.1 使用规则引擎的好处 2.1.1 易于维护和更新 2.1.2 增强应用程序的准确性和效率 2.1.3 加快应用程序的开发和部署 2.1.4 支持可视化和可管理性 2.2 规则引擎使用场景 三、…

基于5G+物联网+SaaS+AI的农业大数据综合解决方案:PPT全文44页,附下载

关键词:智慧农业大数据,5G智慧农业,物联网智慧农业,SaaS智慧农业,AI智慧农业,智慧农业大数据平台 一、智慧农业大数据建设背景 1、应对全球人口快速增长带来的粮食生产压力,未来的粮食生产力必…

ERP软件对Oracle安全产品的支持

这里的ERP软件仅指SAP ECC和Oracle EBS。 先来看Oracle EBS: EBS的认证查询方式,和数据库认证是一样的。这个体验到时不错。 结果中和安全相关的有: Oracle Database VaultTransparent Data Encryption TDE被支持很容易理解,…

Android相机性能提高50%

文章目录 应用举例(可以不看这一part,直接跳过看具体怎么做):Snapchat 通过 Camera2 Extensions API 将新相机功能的集成速度提高了 50%**Camera2 扩展 API 可以访问高级功能更多设备上的更多机会 正文:开始使用扩展架…

Redis String类型

String 类型是 Redis 最基本的数据类型,String 类型在 Redis 内部使用动态长度数组实现,Redis 在存储数据时会根据数据的大小动态地调整数组的长度。Redis 中字符串类型的值最大可以达到 512 MB。 关于字符串需要特别注意∶ 首先,Redis 中所…

前端技术探秘-Nodejs的CommonJS规范实现原理 | 京东物流技术团队

了解Node.js Node.js是一个基于ChromeV8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。Node中增添了很…

Pycharm新手开发指南

文章目录 前言一、常用功能介绍二、常用高效pycharm使用方法关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前言…

MySQL如何处理并发访问和高负载?

在当今互联网时代,面对日益增长的数据量和用户访问量,数据库的并发访问和高负载处理变得尤为重要。MySQL作为最流行的关系型数据库管理系统之一,具备许多关键技术和策略来处理并发访问和高负载,下面将对其进行深入探讨。 ​ 图片…

数据库系统原理与实践 笔记 #10

文章目录 数据库系统原理与实践 笔记 #10存储管理与索引(续)数据字典存储系统元数据的关系表示 数据缓冲区存储访问缓冲区管理器缓冲区替换策略 顺序索引基本概念索引技术评价指标顺序索引稠密索引稀疏索引索引多级索引辅助索引主索引与辅助索引多码索引 B树索引B树索引文件B树…

3D点云目标检测:CT3D解读(未完)

CT3D 一、RPN for 3D Proposal Generation二、Proposal-to-point Encoding Module2.1、Proposal-to-point Embedding2.2、Self-attention Encoding 三、Channel-wise Decoding Module3.1、Standard Decoding3.2、Channel-wise Re-weighting3.3、Channel-wise Decoding Module 四…

如何充分了解客户需求

如何充分了解客户需求 如何充分了解客户需求,以提供贴心服务? 想要提供超出客户期望的优质服务,首先需要了解他们的需求。通过多种方式收集客户反馈、深入挖掘数据、建立紧密的客户关系,我们可以更好地理解客户需求,…

【Spring】Spring是什么?

文章目录 前言什么是Spring什么是容器什么是 IoC传统程序开发控制反转式程序开发理解Spring IoCDI Spring帮助网站 前言 前面我们学习了 servlet 的相关知识,但是呢?使用 servlet 进行网站的开发步骤还是比较麻烦的,而我们本身程序员就属于是…

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-BiLSTM-Multihead-…

Redis性能压测、监控工具及优化方案

Redis是一款高性能的开源缓存数据库,但是在实际应用中,我们需要对Redis进行性能压测、监控以及优化,以确保其稳定性和高可用性。本文将介绍Redis性能压测、监控工具及优化方案。 01 Redis性能压测 常用的Redis性能压测工具有: …