c++初阶易错题(选择)

 本节有32道题,讲的是c++初阶里边我认为重要的题目,有兴趣可以看看十分详细,欢迎互相交流学习

1~10 

 1

A.引用必须定义时初始化,指针不初始化其值为随机指向

B.指针可以改变指向,引用不能,故错误

C.空指针没有任何指向,删除无害,引用是别名,删除引用就删除真实对象

D.引用必须初始化,所以不能为空引用,指针可以

 2

A.引用必须初始化,必须在定义引用时明确引用的是哪个变量或者对象,否则语法错误,指针不初  始化时值为随机指向

B.引用一旦定义时初始化指定,就不能再修改,指针可以改变指向

C.引用必须出示化,不能出现空引用,指针可以赋值为空

D.简单粗暴的引用理解可以理解为被引用变量或对象的"别名"

E.引用表面好像是传值,其本质也是传地址,只是这个工作有编译器来做,所以错误

F.函数调用为了提高效率,常使用引用或指针作为函数参数传递变量或对象

3

函数重载的条件是函数名相同,参数不同,返回值可以相同可以不相同

A.函数名相同只是函数重载的条件之一

B.重载函数必须参数列表有所不同(包括参数类型和参数个数)

C.重载函数不依靠返回值来区分,所以返回值可以相同

D.C不支持函数重载

4

A.重载必须是参数列表有所不同(包括个数和类型),所以参数类型不同,构成重载

B.参数类型不同,构成重载

C.参数类型不同,构成重载

D.函数重载不能依靠返回值的不同来构成重载,因为调用时无法根据参数列表确定调用哪个重载函  数,故错误

5

A.缺省参数就是给出的函数参数的默认值

B.很明显,这是给出缺省值的意义所在,缺省值的定义

C.纯C语言,即.c文件,函数不支持缺省参数,C++即.cpp文件支持

D.半缺省不能随便缺省一半,必须从右往左缺省,否则编译出错

 6

A.不一定,因为inline只是一种建议,需要看此函数是否能够成为内联函数(如果太长就不会成为内联函数,编译器是聪明的)

B. inline函数不支持声明和定义分离开,因为编译器一旦将一个函数作为内联函数处理,就会在调用位置展开,即该函数是没有地址的,也不能在其他源文件中调用,故一般都是直接在源文件中定义内联函数的

C.inline函数会在调用的地方展开,所以符号表中不会有inline函数的符号名,不存在链接冲突。

D.比较长的函数,递归函数就算定义为inline,也会被编译器忽略,故错误

7

A.含有循环语句,违背内联函数的本质

B.含有递归语句,违背内联函数的本质

C.尽可能把代码短小,频繁调用的函数设置为内联函数

D.含代码量大,违背内联函数的本质

内联函数是一种建议,如果函数内部包括循环,递归,或者  代码量大且复杂,这些函数即使设置了内联函数,系统也不会当做内联函数来处理。

8

A.基类保护成员在子类可以直接被访问,跟this无关

B.基类私有成员在子类中不能被访问,跟this无关

C.基类共有成员在子类和对象外都可以直接访问,跟this无关

D.this指针代表了当前对象,能够区分每个对象的自身数据,故正确

 9

A.C语言结构体不支持成员函数,但C++结构体支持,其class与struct本质没有区别,唯一区别  在于默认时class的访问属性为私有,struct为公有

B.正确

C.C++结构体也支持成员函数

10

分析:1、类的析构函数调用一般按照构造函数调用的相反顺序进行调用,但是要注意static对象的存在, 因为static改变了对象的生存作用域,需要等待程序结束时才会析构释放对象

   2、全局对象先于局部对象进行构造

   3、局部对象按照出现的顺序进行构造,无论是否为static

   4、所以构造的顺序为 c a b d

   5、析构的顺序按照构造的相反顺序析构,只需注意static改变对象的生存作用域之后,会放在局部 对象之后进行析构

   6、因此析构顺序为B A D C

11~20 

11

选A

A. 赋值运算符在类中不显式实现时,编译器会生成一份默认的,此时用户在类外再将赋值运算符重载为全局的,就和编译器生成的默认赋值运算符冲突了,故赋值运算符只能重载成成员函数

B.默认的赋值运算符是按成员成员,属于浅赋值

C.参数只有一个,另一个通过this指针传递,成员函数默认第一个参数是隐藏的this指针

D.两个函数的调用场景不同,相互没有影响

12

A.可以,例如重载对象取值,典型有以后学到的智能指针

B.可以,例如以后学到的仿函数就是通过重载()实现的

C.不能,不能被重载的运算符只有5个, 点号. 三目运算?: 作用域访 问符:: 运算符sizeof 以及.*

D.可以,例如重载对象的指向,典型有以后学到的智能指针

13

A.可以访问,这也把一个函数声明为友元的目的

B.可以访问

C.可以访问

D.友元函数对一个类里面的所有成员,全部通吃,正确

14

A.友元函数不是类的成员函数,就相当于你的朋友再亲密也不是你的家人,既然不是类成员函数,那和普通成员函数调用一样,不需要通过对象调用

B.友元的目的就是为了访问类的私有数据,成员函数可以直接访问类的私有数据

C.类的成员函数属于类,调用时其内部数据会通过this指针来调用

D.友元函数不具备this指针,更谈不上通过this调用(友元函数本质是全局函数没有this指针),故错误

15

A.全局函数不具备this指针

B.static函数不具备this指针

C.友元函数不具备this指针

D.正确,普通成员方法具有隐藏的this指针,不管访问限定符是啥,普通非全局,静态,友元函数都有this指针

16

A.static成员变量在对象生成之前生成

B.普通成员函数是可以调用static函数的

C.static函数属于所有对象共享,不具备this指针

D.static函数唯一能够访问的就是static变量或者其他static函数

 17

A.a是不同数据成员,可以通过构造函数进行赋值

B.正确,常量以及引用只能通过初始化列表初始化

C.d,e是静态成员,只能在类外初始化

D.d是静态成员,只能在类外初始化

E.b常量只能通过初始化列表初始化,但不是最佳答案

F.c引用只能通过初始化列表初始化,但不是最佳答案

18

构造函数执行次数就是数组个数,析构函数次数也是数组个数

A.申请数组空间,构造函数调用的次数就是数组的大小

B.正确

C.申请数组空间,构造函数调用的次数就是数组的大小

D.如果释放数组空间,delete使用了[],则会对应的调用数组大小次数的析构函数

19

当new和delete不匹配的时候,程序可能会崩溃(new数组的时候,delete也要跟[])

A.申请对象数组,会调用构造函数5次,delete由于没有使用[],此时只会调用一次析构函数,但往往会引发程序崩溃

B.构造函数会调用5次

C.析构函数此时只会调用1次,要想完整释放数组空间,需要使用[]

D.正确

20

A.堆大小受限于操作系统,而栈空间一般有系统直接分配

B.频繁的申请空间和释放空间,容易造成内存碎片,甚至内存泄漏,栈区由于是自动管理,不存在此问题

C.堆无法静态分配,只能动态分配

D.栈可以通过函数_alloca进行动态分配,不过注意,所分配空间不能通过free或delete进行释放

21~30 

21

A.栈区主要存在局部变量和函数参数,其空间的管理由编译器自动完成,无需手动控制,堆区是自己申请的空间,在不需  要时需要手动释放

B.栈区先定义的变量放到栈底,地址高,后定义的变量放到栈顶,地址低,因此是向下生长的,堆区则相反

C.频繁的申请空间和释放空间,容易造成内存碎片,甚至内存泄漏,栈区由于是自动管理,不存在此问题

D.32位系统下,最大的访问内存空间为4G,所以不可能把所有的内存空间当做堆内存使用,故错误

22

总结:必须有关键字class和typename指定类型,关键字(class和typename是一个意思都可以用)

A.1.模板语法错误,2.没有关键字class或typename指定类型,3.T2缺少class或typename

B.正确, 4,6,7为正确声明

C.5.T2缺少class或typename

D.8.缺少template

23

A.模板可以具有非类型参数,用于指定大小,可以根据指定的大小创建动态结构

B.模板最重要的一点就是类型无关,提高了代码复用性

C.模板运行时不检查数据类型,也不保证类型安全,相当于类型的宏替换,故错误

D.只要支持模板语法,模板的代码就是可移植的

24

分析:

str.reserve(111); //调整容量为 111

str.resize(5);   //调整元素个数为 5,resize时小于容量不会缩容,只会改变size

str.reserve(50);  //调整容量为 50,由于调整的容量小于已有空间容量,故容量不会减小(记住reserve不会缩容只会扩容

所以size=5 capacity=111

故答案为: C

25

分析:vector底层是以当前类型的指针作为迭代器,对于指针而言,能够进行操作的方法都支持,如==,++,*,而>>运算符并没有重载

故答案为D

26

这个答案是C,很简单,看第一个for循环,是删除300赋值给下一个,然后迭代器还要++,等于说有4个300,中间会因为迭代器++跳过2个300,所以打印的时候只有2个300,没想明白可以画图看看很简单的

27

分析:删除节点后,只有指向当前节点的迭代器失效了,其前后的迭代器仍然有效,因为底层为不连续空间,只有被删除的节点才会失效, 所以答案为 C

28

这道题是B选项,因为是不为0就打印并++迭代器,当迭代器指向0的时候删除0并且指向下一个位置,后边还有个++it,就跳过5直接指向6了所以打印没有0和5

29

分析:优先级队列priority_queue底层采用vector容器作为底层数据结构

30

这道题本质是想说明仿函数是模版函数,就可以按照模板的使用来答题

A.仿函数是模板函数,可以根据不同的类型代表不同的状态

B.仿函数是模板函数,可以有不同类型

C.仿函数是模板函数(因为要实例化),其速度比一般函数要慢,故错误

D.仿函数在一定程度上使代码更通用,本质上简化了代码

31~32

 31

A.deque底层总体为不连续空间

B.不支持,因为底层是一个个的不连续节点

C.正确

D.一般会以容量的2倍扩充容量,这是为了减少扩容的次数,减少内存碎片

32

这道题有点难,需要理解三种容器的底层实现

分析:此题主要考察cont.erase(tmpit)删除数据之后,迭代器失效相关问题

本题重点要关注的是底层实现

vector、deque底层都是用了连续空间,所以虽然++iter迭代器了,但是erase(tempit)以后

底层是连续空间,删除会挪动数据,最终导致iter意义变了,已失效了

而list,不是连续空间,删除以后tempIt虽然失效了,但是不影响iter

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

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

相关文章

Java 设计模式之享元模式(Flyweight Pattern)

享元模式(Flyweight Pattern) 是一种 结构型设计模式,旨在通过共享对象来有效支持大量细粒度对象的复用,从而减少内存占用和提高性能。其核心是 分离内部状态(可共享)与外部状态(不可共享&#…

【WEB APIs】BOM-操作浏览器

目录 1. Window对象 1.1 BOM 1.2 定时器-延时函数 1.3 JS执行机制 1.4 location对象 1.5 navigator对象(复制) 1.6 history对象 2. 本地存储(重点) 2.1 介绍 2.2 分类 localStorage sessionStorage 存储复杂数据类型…

数据结构——树与二叉树

树与二叉树 1. 树的基本概念 1.1 树的定义 树(tree)是 n ( n ≥ 0 ) n(n\geq 0) n(n≥0)个结点的有限集T。当n为0时时空树,任意一棵非空树应该满足: 有且仅有一个特定的结点,称为树的根(root)当 n > 1 n>1 n>1时,其余…

K8S快速部署

前置虚拟机环境正式部署BUG解决 前置虚拟机环境 每个虚拟机配置一次就好 #关闭防火墙 systemctl stop firewalld systemctl disable firewalld #关闭 selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时 #关闭 swap swapoff -a # 临时 vi…

Vue生命周期

一、Vue的生命周期及其阶段 Vue生命周期:一个Vue实例从 创建 到 销毁 的整个过程。也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是 Vue 的生命周期。 生命周期的四个阶段:① 创建 ② 挂…

Android中的Wifi框架系列

Android wifi框架图 Android WIFI系统引入了wpa_supplicant,它的整个WIFI系统以wpa_supplicant为核心来定义上层接口和下层驱动接口。 Android WIFI主要分为六大层,分别是WiFi Settings层,Wifi Framework层,Wifi JNI 层&#xff…

Vue项目搜索引擎优化(SEO)终极指南:从原理到实战

文章目录 1. SEO基础与Vue项目的挑战1.1 为什么Vue项目需要特殊SEO处理?1.2 搜索引擎爬虫工作原理 2. 服务端渲染(SSR)解决方案2.1 Nuxt.js框架实战原理代码实现流程图 2.2 自定义SSR实现 3. 静态站点生成(SSG)技术3.1…

嵌入式八股RTOS与Linux---前言篇

前言 Linux与RTOS是校招八股的时候很喜欢考察的知识,在这里并没有把两个操作系统完全的独立开去讲,放在一起对比或许可能加深印象。我们讲Linux的内核有五部分组成:进程调度、内存管理、文件系统、网络接口、进程间通信,所以我也将从这五方面出发 中断管理去对比和RTOS的不同。…

centos 8安装及相关操作

安装centos 8 在VMware workstation中安装 UEFI对比BIOS有更快的启动速度、支持更大容量硬盘及 GPT 分区、图形化操作界面更友好、安全性更高、对新操作系统支持更好、硬件兼容性不断增强以及扩展性更好等。 按回车确定 重置root管理员密码 这样进入到紧急救援模式 mount -o r…

2025最新版Windows通过GoLand远程连接Linux构建Go项目保姆级教学

以Ubuntu24.04和GoLand2024.1.6为例子,演示如何在Windows上通过GoLand远程连接Linux进行Go编程。 通过go version指令可以发现当前Ubuntu系统没有安装go。 go version 通过指令安装go,其他系统可以通过wget安装,要指定安装的具体go版本&…

多元时间序列预测的范式革命:从数据异质性到基准重构

本推文介绍了一篇来自中国科学院计算技术研究所等机构的论文《Exploring Progress in Multivariate Time Series Forecasting: Comprehensive Benchmarking and Heterogeneity Analysis》,发表在《IEEE Transactions on Intelligent Transportation Systems》。论文…

开源PACS(dcm4che-arc-light)部署教程,源码方式

目录 文件清单下载地址安装概述OpenLDAP、Apache Directory StudioWildflydcm4che 安装部署MySQL源码编译dcm4cheedcm4chee-arc-light OpenLDAP安装ApacheDirectoryStudio安装配置WildFly服务器 部署完成 文件清单 下载地址 Apache directory studio - linkOpenLDAP - linkdcm…

PySide(PyQt),使用types.MethodType动态定义事件

以PySide(PyQt)的图片项为例,比如一个视窗的场景底图是一个QGraphicsPixmapItem,需要修改它的鼠标滚轮事件,以实现鼠标滚轮缩放显示的功能。为了达到这个目的,可以重新定义一个QGraphicsPixmapItem类,并重写它的wheelE…

深度学习 Deep Learning 第1章 深度学习简介

第1章 深度学习简介 概述 本章介绍人工智能(AI)和深度学习领域,讨论其历史发展、关键概念和应用。解释深度学习如何从早期的AI和机器学习方法演变而来,以及如何有效解决之前方法无法应对的挑战。 关键概念 1. 人工智能的演变 …

简述下npm,cnpm,yarn和pnpm的区别,以及跟在后面的-g,--save, --save-dev代表着什么

文章目录 前言一、npm,cnpm,yarn和pnpm的基本介绍和特点1.npm (Node Package Manager)2. Yarn3. cnpm (China npm)4. pnpm 二、简述npm和pnpm 的存储方式和依赖数1.存储方式2.依赖树 三、两者依赖树的差异导致结果的对比四、简单说说-g,--sav…

vue3系列:vite+vue3怎么配置通过ip和端口打开浏览器

目录 1.前言 2.修改前的 3.修改后的 4.效果 5.其他 1.前言 想要使用IP端口号的方式访问页面,结果无法访问 查了些资料,原来是vite.config.js需要加一些配置才能让他通过IP访问,默认的只能localhost:端口号访问 2.修改前的 使用vue3默认…

使用yolov8+flask实现精美登录界面+图片视频摄像头检测系统

这个是使用flask实现好看登录界面和友好的检测界面实现yolov8推理和展示,代码仅仅有2个html文件和一个python文件,真正做到了用最简洁的代码实现复杂功能。 测试通过环境: windows x64 anaconda3python3.8 ultralytics8.3.81 flask1.1.2…

突破连接边界!O9201PM Wi-Fi 6 + 蓝牙 5.4 模块重新定义笔记本无线体验

在当今数字化时代,笔记本电脑已成为人们工作、学习和娱乐的必备工具。而无线连接技术,作为笔记本电脑与外界交互的关键桥梁,其性能的优劣直接关乎用户体验的好坏。当下,笔记本电脑无线连接领域存在诸多痛点,严重影响着…

2025 香港 Web3 嘉年华:全球 Web3 生态的年度盛会

自 2023 年首届香港 Web3 嘉年华成功举办以来,这一盛会已成为全球 Web3 领域规模最大、影响力最深远的行业活动之一。2025 年 4 月 6 日至 9 日,第三届香港 Web3 嘉年华将在香港盛大举行。本届活动由万向区块链实验室与 HashKey Group 联合主办、W3ME 承…

Windows11 新机开荒(二)电脑优化设置

目录 前言: 一、注册微软账号绑定权益 二、此电脑 桌面图标 三、系统分盘及默认存储位置更改 3.1 系统分盘 3.2 默认存储位置更改 四、精简任务栏 总结: 前言: 本文承接上一篇 新机开荒(一) 上一篇文章地址&…