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.hqwc.cn/news/235215.html

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

相关文章

windows文件删除权限

一、普通文件 这里指的是所有可以被随意删除的文件。 二、可更改权限的文件 如果想要删除的文件无法被删除,那大概是权限不够,这时候:鼠标右键、属性、安全、编辑、选择相应的组或用户(如果不知道哪个可以全选,反正…

MySQL C代码连接

环境:5.7.42-0ubuntu0.18.04.1 (Ubuntu) mysql接口介绍 初始化mysql指针 用来生成MySQL对象,返回值为MySQL*,MySQL*是MySQL对象的指针。 MySQL在mysql.h中是一个结构体 链接数据库 初始化完毕之后,必须先链接数据库&#xff…

App测试、H5测试及小程序测试

文章目录 前言一、App常见测试要点1.App功能测试1.1.App安装与卸载1.2.App升级测试1.3.App登陆测试1.4.离线测试1.5.触屏及操作测试1.6.App消息推送测试 2.AppUI界面测试3.App兼容性测试-适配/手机适配4.App中断测试5.App网络测试6.App安全测试7.App性能测试8.App测试与web测试…

数据结构(六):堆介绍及面试常考算法

一、堆介绍 1、定义 堆是一种图的树形结构,被用于实现“优先队列”(priority queues)。优先队列是一种数据结构,可以自由添加数据,但取出数据时要从最小值开始按顺序取出。在堆的树形结构中,各个顶点被称…

2023.11.27 使用anoconda搭建tensorflow环境

2023.11.27 使用anoconda搭建tensorflow环境 提供一个简便安装tensorflow的方法 1. 首先安装anoconda,安装过程略,注意安装的时候勾选安装anoconda prompt 2. 进入anoconda prompt 3. 建立python版本 conda create -n tensorflow1 python3.84. 激活t…

融资经理简历模板

这份简历内容,以综合柜员招聘需求为背景,我们制作了1份全面、专业且具有参考价值的简历案例,大家可以灵活借鉴。 融资经理简历在线编辑下载:百度幻主简历 求职意向 求职类型:全职 意向岗位:融资经理 …

VIR-SLAM代码分析3——VIR_VINS详解之estimator.cpp/.h

前言 续接上一篇,本本篇接着介绍VIR-SLAM中estimator.cpp/.h文件的函数,尤其是和UWB相关的相比于VINS改动过的函数,仍然以具体功能情况代码注释的形式进行介绍。 重点函数介绍 优化函数,代码是先优化,后边缘化。 …

java学校高校运动会报名信息管理系统springboot+jsp

课题研究方案: 结合用户的使用需求,本系统采用运用较为广泛的Java语言,springboot框架,HTML语言等关键技术,并在idea开发平台上设计与研发创业学院运动会管理系统。同时,使用MySQL数据库,设计实…

计算机网络(二)

(八)客户端软件设计的细节 A、解析协议号 客户端可能会需要通过协议名指定协议,但是Socket接口是用协议号指定的,这时候我们就需要使用getprotobyname()函数实现协议名到协议号的转换,该函数会返回一个指向protoent的…

Lighthouse(灯塔)—— Chrome浏览器强大的性能测试工具

本文浏览器版本参考如下: 一、认识Lighthouse Lighthouse 是 Google 开发的一款工具,用于分析网络应用和网页,收集现代性能指标并提供对开发人员最佳实践的意见。 为 Lighthouse 提供一个需要审查的网址,它将针对此页面运行一连…

佳易王物流快运物流单打印登记查询系统软件操作教程

一、前言(编程应用实例系列): 佳易王物流快运物流单打印登记查询系统软件操作教程 软件有试用版,可以下载试用,了解软件操作和软件功能。 软件试用版下载可以点击最下方官网卡片 软件为绿色免安装版,下载…

Apache Hive3.1.3 遇到DATE_FORMAT转换2021年12月格式的问题

比如:需要将时间2021-12-28 00:00:00转换成2021-12的格式,用date_format会将2021-12转换成2022-12的问题。 解决方法: 方式一:大写的‘Y’换成‘y’ 方式二:字符串截取,substr 本博主推荐方式一&#xf…