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不是,因为参数类型相同,个数相同;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python基础学习之包与模块详解

文章目录 前言什么是 Python 的包与模块包的身份证如何创建包创建包的小练习 包的导入 - import模块的导入 - from…import导入子包及子包函数的调用导入主包及主包的函数调用导入的包与子包模块之间过长如何优化 强大的第三方包什么是第三方包如何安装第三方包 总结关于Python…

[pyqt5]PyQt5之如何设置QWidget窗口背景图片问题

目录 PyQt5设置QWidget窗口背景图片 QWidget 添加背景图片问题QSS 背景图样式区别PyQt设置窗口背景图像,以及图像自适应窗口大小变化 总结 PyQt5设置QWidget窗口背景图片 QWidget 添加背景图片问题 QWidget 创建的窗口有时并不能直接用 setStyleSheet 设置窗口部分…

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…

Java开发规范(简洁明了)

本篇规范基于阿里巴巴开发手册,总结了一些主要的开发规范,希望对大家有帮助。 目录 1. 命名规范: 2. 缩进和空格: 3. 花括号: 4. 注释: 5. 空行: 6. 导入语句: 7. 异常处理&a…

源 “MySQL 8.0 Community Server“ 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。

源 “MySQL 8.0 Community Server“ 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。yum install mysql-server --nogpgcheck

电子商务网站的技术 SEO:完整指南

技术 SEO 涉及对您的网站进行更改,这些更改由搜索引擎蜘蛛读取并由搜索结果索引。它简化了搜索引擎读取您网站的方式。如果不包括技术 SEO 服务,你就不可能有一个成功的电子商务 SEO 计划。主要目标是增强网站的框架。 在线商店的技术搜索引擎优化建议 …

熟悉SVN基本操作-(SVN相关介绍使用以及冲突解决)

一、SVN相关介绍 1、SVN是什么? 代码版本管理工具它能记住你每次的修改查看所有的修改记录恢复到任何历史版本恢复已经删除的文件 2、SVN跟Git比,有什么优势 使用简单,上手快目录级权限控制,企业安全必备子目录checkout,减少…

Redis应用的16个场景

常见的16种应用场景: 缓存、数据共享分布式、分布式锁、全局 ID、计数器、限流、位统计、购物车、用户消息时间线 timeline、消息队列、抽奖、点赞、签到、打卡、商品标签、商品筛选、用户关注、推荐模型、排行榜. 1、缓存 String类型 例如:热点数据缓存&#x…

【驱动】SPI驱动分析(四)-关键API解析

关键API 设备树 设备树解析 我们以Firefly 的SPI demo 分析下dts中对spi的描述&#xff1a; /* Firefly SPI demo */ &spi1 {spi_demo: spi-demo00{status "okay";compatible "firefly,rk3399-spi";reg <0x00>;spi-max-frequency <48…

C#工程中Form_xx.cs不能在设计器中查看

环境&#xff1a;VS2022 直接上图&#xff1a; 原因&#xff1a; 写了个类在Form_xx.cs中从For继承的部分类之前&#xff0c;移动到之后&#xff0c;保证窗体类是代码中的首个类即可&#xff0c;如图&#xff1a;

python pytorch实现RNN,LSTM,GRU,文本情感分类

python pytorch实现RNN,LSTM&#xff0c;GRU&#xff0c;文本情感分类 数据集格式&#xff1a; 有需要的可以联系我 实现步骤就是&#xff1a; 1.先对句子进行分词并构建词表 2.生成word2id 3.构建模型 4.训练模型 5.测试模型 代码如下&#xff1a; import pandas as pd im…

【强迫症患者必备】SpringBoot项目中Mybatis使用mybatis-redis开启三级缓存必须创建redis.properties优化方案

springboot项目中mybatis使用mybatis-redis开启三级缓存需要创建redis.properties优化方案 前言下载mybatis-redis源码分析RedisCache 代码RedisConfigurationBuilder的parseConfiguration方法 优化改造1.创建JedisConfig类2.复制RedisCache代码创建自定义的MyRedisCache3.指定…

INA219电流感应芯片_程序代码

详细跳转借鉴链接INA219例程此处进行总结 简单介绍一下 INA219&#xff1a; 1、 输入脚电压可以从 0V~26V,INA219 采用 3.3V/5V 供电. 2、 能够检测电流&#xff0c;电压和功率&#xff0c;INA219 内置基准器和乘法器使之能够直接以 A 为单位 读出电流值。 3、 16 位可编程地…

计算机体系结构----流水线技术(三)

本文仅供学习&#xff0c;不作任何商业用途&#xff0c;严禁转载。绝大部分资料来自----计算机系统结构教程(第二版)张晨曦等 计算机体系结构----流水线技术&#xff08;三&#xff09; 3.1 流水线的基本概念3.1.1 什么是流水线3.1.2 流水线的分类1. 部件级流水线、处理机级流…

DCAMnet网络复现与讲解

距论文阅读完毕已经过了整整一周多。。。终于抽出时间来写这篇辣&#xff01;~ 论文阅读笔记放这里&#xff1a; 基于可变形卷积和注意力机制的带钢表面缺陷快速检测网络DCAM-Net&#xff08;论文阅读笔记&#xff09;-CSDN博客 为了方便观看&#xff0c;我把结构图也拿过来了。…

Unity 一些常用注解

在Unity中有一些比较常用的注解&#xff1a; 1、[SerializeField]&#xff1a;将私有字段或属性显示在 Unity 编辑器中&#xff0c;使其可以在 Inspector 窗口中进行编辑。 2、[Range(min, max)]&#xff1a;限制数值字段或属性的范围&#xff0c;在 Inspector 窗口中以滑动条…

【合集】MQ消息队列——Message Queue消息队列的合集文章 RabbitMQ入门到使用

前言 RabbitMQ作为一款常用的消息中间件&#xff0c;在微服务项目中得到大量应用&#xff0c;其本身是微服务中的重点和难点。本篇博客是Message Queue相关的学习博客文章的合集篇&#xff0c;目前主要是RabbitMQ入门到使用文章&#xff0c;后续会扩展其他MQ。 目录 前言一、R…

中国毫米波雷达产业分析3——毫米波雷达市场分析(四、五、六)

四、康养雷达市场 &#xff08;一&#xff09;市场背景 1、政府出台系列政策提升智慧健康养老产品供给和应用 康养雷达是一种以老年人为主要监测对象&#xff0c;可以实现人体感应探测、跌倒检测报警、睡眠呼吸心率监测等重要养老监护功能的新型智慧健康养老产品。 随着我国经…

C#常见的设计模式-创建型模式

引言 在软件开发过程中&#xff0c;设计模式是一种被广泛采用的思想和实践&#xff0c;可以提供一种标准化的解决方案&#xff0c;以解决特定问题。设计模式分为三种类型&#xff1a;创建型模式、结构型模式和行为型模式。本篇文章将重点介绍C#中常见的创建型模式。 目录 引言…

【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析

文章目录 行为型模式1、模板方法模式&#xff08;1&#xff09;概述&#xff08;2&#xff09;结构&#xff08;3&#xff09;案例实现&#xff08;4&#xff09;优缺点&#xff08;5&#xff09;适用场景&#xff08;6&#xff09;JDK源码解析&#xff08;7&#xff09;模板方…