当前位置: 首页 > news >正文

C++概念相关练习题

目录

一、内存管理 

二、运算符重载

三、this指针

四、构造&析构函数


一、内存管理 

下面有关c++内存分配堆栈说法错误的是( )

A.对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制

B. 对于栈来讲,生长方向是向下的,也就是向着内存地址减小的方向;对于堆来讲,它的生长方向是向上的,是向着内存地址增加的方向增长

C.对于堆来讲,频繁的 new/delete 势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对于栈来讲,则不会存在这个问题

D.一般来讲在 32 位系统下,堆内存可以达到4G的空间,但是对于栈来讲,一般都是有一定的空间大小的

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

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

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

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

C++中关于堆和栈的说法,哪个是错误的:( )

A.堆的大小仅受操作系统的限制,栈的大小一般较小

B.在堆上频繁的调用new/delete容易产生内存碎片,栈没有这个问题

C.堆和栈都可以静态分配

D.堆和栈都可以动态分配

  • A.堆大小受限于操作系统,而栈空间一般有系统直接分配
  • B.频繁的申请空间和释放空间,容易造成内存碎片,甚至内存泄漏,栈区由于是自动管理,不存在此问题
  • C.堆无法静态分配,只能动态分配
  • D.栈可以通过函数_alloca进行动态分配,不过注意,所分配空间不能通过free或delete进行释放

 

ClassA *pclassa=new ClassA[5];delete pclassa;

c++语言中,类ClassA的构造函数和析构函数的执行次数分别为( )

A.5,1

B.1,1

C.5,5

D.程序可能崩溃

  • A.申请对象数组,会调用构造函数5次,delete由于没有使用[],此时只会调用一次析构函数,但往往会引发程序崩溃
  • B.构造函数会调用5次
  • C.析构函数此时只会调用1次,要想完整释放数组空间,需要使用[]
  • D.正确

 使用 char* p = new char[100]申请一段内存,然后使用delete p释放,有什么问题?( )

A.会有内存泄露

B.不会有内存泄露,但不建议用

C.编译就会报错,必须使用delete []p

D.编译没问题,运行会直接崩溃

  • A.对于内置类型,此时delete就相当于free,因此不会造成内存泄漏
  • B.正确
  • C.编译不会报错,建议针对数组释放使用delete[],如果是自定义类型,不使用方括号就会运行时错误
  • D.对于内置类型,程序不会崩溃,但不建议这样使用

 

int globalVar = 1;static int staticGlobalVar = 1;void Test(){static int staticVar = 1;int localVar = 1;int num1[10] = {1, 2, 3, 4};char char2[] = "abcd";char* pChar3 = "abcd";int* ptr1 = (int*)malloc(sizeof (int)*4);int* ptr2 = (int*)calloc(4, sizeof(int));int* ptr3 = (int*)realloc(ptr2, sizeof(int)*4);free (ptr1);free (ptr3);}

1. 选择题:

  选项: A.栈 B.堆 C.数据段(静态区) D.代码段(常量区)

  globalVar在哪里?__C__  staticGlobalVar在哪里?__C__

  staticVar在哪里?__C__  localVar在哪里?__A__

  num1 在哪里?__A__

 char2在哪里?__A__  *char2在哪里?__A__

  pChar3在哪里?__A__   *pChar3在哪里?__D__

  ptr1在哪里?__A__    *ptr1在哪里?__B__

  分析:

  • globalVar全局变量在数据段 staticGlobalVar静态全局变量在静态区
  • staticVar静态局部变量在静态区  localVar局部变量在栈区
  • num1局部变量在栈区
  • char2局部变量在栈区  
  • char2是一个数组,把后面常量串拷贝过来到数组中,数组在栈上,所以*char2在栈上

  • pChar3局部变量在栈区 , *pChar3得到的是字符串常量字符在代码段

  • ptr1局部变量在栈区 ,*ptr1得到的是动态申请空间的数据在堆区

2. 填空题:

  sizeof(num1) = __40__;//数组大小,10个整形数据一共40字节

  sizeof(char2) = __5__;//包括\0的空间

  strlen(char2) = __4__;//不包括\0的长度

  sizeof(pChar3) = __4__;//pChar3为指针

  strlen(pChar3) = __4__;//字符串“abcd”的长度,不包括\0的长度

  sizeof(ptr1) = __4__;//ptr1是指针

二、运算符重载

下列关于赋值运算符“=”重载的叙述中,正确的是( )

A.赋值运算符只能作为类的成员函数重载

B.默认的赋值运算符实现了“深层复制”功能

C.重载的赋值运算符函数有两个本类对象作为形参

D.如果己经定义了复制拷贝构造函数,就不能重载赋值运算符

  • A. 赋值运算符在类中不显式实现时,编译器会生成一份默认的,此时用户在类外再将赋值运算符重载为全局的,就和编译器生成的默认赋值运算符冲突了,故赋值运算符只能重载成成员函数
  • B.默认的赋值运算符是按成员成员,属于浅赋值
  • C.参数只有一个,另一个通过this指针传递
  • D.两个函数的调用场景不同,相互没有影响

三、this指针

下列有关this指针使用方法的叙述正确的是( )

A.保证基类保护成员在子类中可以被访问

B.保证基类私有成员在子类中可以被访问

C.保证基类公有成员在子类中可以被访问

D.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码

  • A.基类保护成员在子类可以直接被访问,跟this无关
  • B.基类私有成员在子类中不能被访问,跟this无关
  • C.基类共有成员在子类和对象外都可以直接访问,跟this无关
  • D.this指针代表了当前对象,能够区分每个对象的自身数据,故正确

 下面描述错误的是( )

A.this指针是非静态成员函数的隐含形参.

B.每个非静态的成员函数都有一个this指针.

C.this指针是存在对象里面的.

D.this指针可以为空

  • A.静态成员函数没有this指针,只有非静态成员函数才有,且为隐藏指针
  • B.非静态成员函数的第一个参数就是隐藏的this指针
  • C.this指针在非静态的成员函数里面,对象不存在,故错误
  • D.单纯的对this赋空是不可以的,不过可以强转直接赋空,不过一般不进行这样的操作

四、构造&析构函数

在函数F中,本地变量a和b的构造函数和析构函数的调用顺序是: ( )

Class A;Class B;void F() {A a;B b;
}

A.b构造 a构造 a析构 b析构

B.a构造 a析构 b构造 b析构

C.b构造 a构造 b析构 a析构

D.a构造 b构造 b析构 a析构

  •  A.构造顺序是按照语句的顺序进行构造,析构是按照构造的相反顺序进行析构,因此先构造b错误
  • B.a析构的时机不对,对象析构要在生存作用域结束的时候才进行析构,因此先析构a错误
  • C.b的构造时机错误,先构造a
  • D.正确,构造顺序是按照语句的顺序进行构造,析构是按照构造的相反顺序进行析构

 设已经有A,B,C,D4个类的定义,程序中A,B,C,D析构函数调用顺序为?( )

C c;int main()
{A a;B b;static D d;return 0;
}

A.D B A C

B.B A D C

C.C D B A

D.A B D C

  1.  类的析构函数调用一般按照构造函数调用的相反顺序进行调用,但是要注意static对象的存在, 因为static改变了对象的生存作用域,需要等待程序结束时才会析构释放对象
  2. 全局对象先于局部对象进行构造
  3. 局部对象按照出现的顺序进行构造,无论是否为static
  4. 所以构造的顺序为 c a b d
  5. 析构的顺序按照构造的相反顺序析构,只需注意static改变对象的生存作用域之后,会放在局部 对象之后进行析构
  6. 因此析构顺序为B A D C

 拷贝构造函数的特点是( )

A.该函数名同类名,也是一种构造函数,该函数返回自身引用

B.该函数只有一个参数,是对某个对象的引用

C.每个类都必须有一个拷贝初始化构造函数,如果类中没有说明拷贝构造函数,则编译器系统会自动生成一个缺省拷贝构造函数,作为该类的保护成员

D.拷贝初始化构造函数的作用是将一个已知对象的数据成员值拷贝给正在创建的另一个同类的对象

  •  A.拷贝构造函数也是一构造函数,因此不能有返回值
  • B.该函数参数是自身类型的对象的引用
  • C.自动生成的缺省拷贝构造函数,作为该类的公有成员,否则无法进行默认的拷贝构造
  • D.用对象初始化对象这是拷贝构造函数的使命,故正确

相关文章:

C++概念相关练习题

目录 一、内存管理 二、运算符重载 三、this指针 四、构造&析构函数 一、内存管理 下面有关c内存分配堆栈说法错误的是( ) A.对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制 B. 对…...

区间合并笔记

文章目录 什么是区间合并怎么做区间合并AcWing 803. 区间合并思路解析my - CODEdalao の CODE 什么是区间合并 区间合并是指给定多个区间,让你将重合的区间合并为一个区间 怎么做区间合并 区间合并类问题大多三个办法: 按左端点排序按右端点排序按左右…...

青少年CTF之PHP特性练习(1-5)

青少年CTF-PHP特性练习 文章目录 青少年CTF-PHP特性练习PHP特性01PHP特性02PHP特性03PHP特性04PHP特性05 PHP特性01 看给出的源码&#xff0c;两个变量的值加密后的MD5相同 <?php$s1 "%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90%68%a0%2d%e9%47…...

《opencv实用探索·七》一文看懂图像卷积运算

1、图像卷积使用场景 图像卷积是图像处理中的一种常用的算法&#xff0c;它是一种基本的滤波技术&#xff0c;通过卷积核&#xff08;也称为滤波器&#xff09;对图像进行操作&#xff0c;使用场景如下&#xff1a; 模糊&#xff08;Blur&#xff09;&#xff1a; 使用加权平…...

RPA机器人如何确保敏感数据的安全性

数据资源作为数字化时代的关键要素&#xff0c;其重要性一直受到高度重视&#xff0c;由此&#xff0c;数据安全也成为企业和个人必须面对的重要问题。随着RPA技术在各个行业的广泛应用&#xff0c;其系统安全性也成了每个企业关注的重中之重。经验丰富的RPA专家可以有效地采取…...

微信号被封了怎么办

13-7 常在河边走&#xff0c;哪有不湿鞋&#xff0c;做为经常用微信做电商客服的&#xff0c;或者经常在微信上和顾客谈钱的&#xff0c;总是会被微信后台重点关注&#xff0c;一不小心就有可能被封号。 如果遇到太倒霉的时候&#xff0c;永久封号了&#xff0c;这个时候微信…...

关于 ls -s 输出文件大小的单位问题的讨论

自己看书正好看到这里&#xff0c;正纳闷呢&#xff0c;上网查了下&#xff0c;发现不是我自己在为这个问题感到困惑。 有个大哥提出一个问题&#xff1a; 问题标题&#xff1a; ls -s的单位到底是什么&#xff1f; man ls -s, --size print the alloca…...

JSON.stringify方法详解 后端接受JSON数据格式

1、方法定义&#xff1a;JSON.stringify(value, replacer, space) 参数说明&#xff1a; value&#xff1a;js对象 replacer&#xff1a;替换对象&#xff0c;可以是一个方法、对象或数组&#xff0c;将value按照替换规则展示。 space&#xff1a;填充参数&#xff0c;可以是数…...

vue请求如何按顺序执行

我们有时候会碰到这种情况&#xff0c;需要连续发送两个请求&#xff0c;第二个请求需要用第一个请求的某个返回值作为参数来作为第二个请求的请求参数。 但是存在一个问题&#xff1a;两个请求都是异步的&#xff0c;他并不按照我们期望的先后顺序来执行。 这时候就需要控制请…...

【java】编译时bug 项目启动前bug合集

文章目录 1. jdk8中 Optional orElseThrow 编译时报错java: 未报告的异常错误X; 必须对其进行捕获或声明以便抛出2. 启动项目时提示 Error running Application: Command line is too long. Shorten command line for Application or also for Spring Boot default configurati…...

Pytorch——多卡GPU训练与单卡GPU训练相互切换

部分深度学习网络默认是多卡并行训练的&#xff0c;由于某些原因&#xff0c;有时需要指定在某单卡上训练&#xff0c;最近遇到一个&#xff0c;这里总结如下。 目录 一、多卡训练1.1 修改配置文件1.2 修改主训练文件1.3 显卡使用情况 二、单卡训练2.1 修改配置文件2.2 显卡使…...

Github项目-CNNResnet9-残差神经网络水果多分类项目

ResNet-论文全文完整翻译注解 - 知乎 你必须要知道CNN模型&#xff1a;ResNet - 知乎 #!/usr/bin/env python # coding: utf-8 #https://github.com/SehajS/cnn-resnet-fruit-classification # # Classifying Fruits from their Images # # This project aims at creating a…...

学习感悟一己之言

学习感悟一己之言 学习上克服困难实际上是克服心理上或认识上的障碍的过程。所谓的理解&#xff0c;就是化陌生为熟悉。看不懂&#xff0c;一方面是因为接触的材料太陌生&#xff0c;即远离你当前的背景知识&#xff1b;另一方面是材料或讲述者的描述刻画不准确或晦涩不当。有了…...

【设计模式-2.3】创建型——原型模式

说明&#xff1a;本文介绍设计模式中&#xff0c;创建型中的原型模式&#xff1b; 飞机大战 创建型设计模式关注于对象的创建&#xff0c;原型模式也不例外。如简单工厂和工厂模式中提到过的飞机大战这个例子&#xff0c;游戏中飞机、坦克对象会创建许许多多的实例&#xff0…...

八大插入算法(有注释)

直接插入排序 //直接插入排序 void InsertSortingDirectly(int* nums,int numsSize){int j0;for(int i1;i<numsSize-1;i){//定义一个中间变量保存当前要插入的值int tempnums[i];//在前面已排好序的序列中&#xff0c;找到合适的位置插入for(ji-1;j>0;j--){if(nums[j]&g…...

【2】基于多设计模式下的同步异步日志系统

6. 相关技术知识补充 6.1 不定参函数 在初学C语⾔的时候&#xff0c;我们都⽤过printf函数进⾏打印。其中printf函数就是⼀个不定参函数&#xff0c;在函数内部可以根据格式化字符串中格式化字符分别获取不同的参数进⾏数据的格式化。 ⽽这种不定参函数在实际的使⽤中也⾮常…...

npm管理发布包-创建与发布

创建与发布 我们可以将自己开发的工具包发布到 npm 服务上&#xff0c;方便自己和其他开发者使用&#xff0c;操作步骤如下 创建文件夹&#xff0c;并创建文件indexjs&#xff0c;在文件中声明函数&#xff0c;使用 module.exports 暴露npm初始化工具包&#xff0c;package.j…...

基于Spring,SpringMVC,MyBatis的校园二手交易网站

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring,SpringMVC,MyBatis的校园二…...

酒店 KPI绩效考核指标及应用

“路遥知马力&#xff0c;日久见人心”&#xff0c;目前国内各类型酒店风起云涌&#xff0c;大有在市场竞争中一比高下之势&#xff0c;各路精英受经济型酒店低投入高回报的市场利益驱动&#xff0c;都分分抢占市场&#xff0c;从而使国内经济型酒店的数量不断增加&#xff0c;…...

WordPress两种方法实现上传媒体图片文件自动重命名

我们发布文章时&#xff0c;会上传一些图片、音频之类的文件。但是WordPress没有自动 给新上传文件重命名的功能&#xff0c;逐个文件去重命名那就太麻烦了&#xff0c;那么我们改如何自动给上传的媒体文件图片重命名呢&#xff1f; 我在网站搜索了些上WordPress上传媒体文件自…...

华硕笔记本终极性能优化指南:GHelper如何一键释放你的设备潜能?

华硕笔记本终极性能优化指南&#xff1a;GHelper如何一键释放你的设备潜能&#xff1f; 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, V…...

GraphRAG生态全景:6大主流方案盘点

在大模型应用加速落地的过程中&#xff0c;RAG已经成为企业构建智能知识库、智能问答系统和行业大模型应用的重要技术路线。但随着场景从简单文档问答进入复杂业务推理&#xff0c;传统RAG的能力边界正在逐渐显现。尤其是在公安、海关、保险、电力、军事等行业中&#xff0c;企…...

像素风机甲对战小游戏HTML

先放效果图&#x1f3ae; 游戏玩法设计功能说明&#xff1a; 双人对战&#xff1a;两个玩家在同一键盘上对战 移动系统&#xff1a;左右移动 跳跃&#xff08;带重力物理&#xff09; 攻击系统&#xff1a; 近战攻击&#xff0c;有冷却时间和范围判定 防御系统&#xff1a;…...

【tomcat部署前台war包报错】

tomcat部署前台war包报错 背景&#xff1a;tomcat启动前台war包&#xff0c;由zip直接改文件后缀成war包&#xff0c;jdk8 同事好使&#xff0c;我不好使 部署平台日志&#xff1a; 报错一、正常tomcat执行时会把war包解压成对应文件夹&#xff0c;这里应该是没解压成功。没有具…...

从低空协议劫持实战看 MAVLink 二进制审计在飞控发布环节的必要性

攻防实测复盘&#xff1a;协议劫持漏洞成因解析无人机接管攻击的本质不是高危漏洞&#xff0c;而是协议与生俱来的默认信任逻辑。近期多项低空攻防实测中&#xff0c;攻击者依托通用射频采集设备&#xff0c;即可持续捕获空口无线交互数据&#xff0c;实现对飞行设备的非正常控…...

课堂教学PPT模板平台深度测评与选用指南

一、引言&#xff1a;PPT—— 课堂教学的重要辅助工具在当今的课堂教学中&#xff0c;PPT 已经成为了教师们不可或缺的 “魔法道具”。一份精心设计的 PPT&#xff0c;就像一位无声的助教&#xff0c;能够将抽象的知识变得直观形象&#xff0c;将枯燥的内容变得生动有趣。它不仅…...

Unity项目性能优化实战:除了Simplygon,还有哪些轻量级减面工具和技巧?

Unity项目性能优化实战&#xff1a;轻量级减面工具与技巧全解析 在Unity项目开发中&#xff0c;3D模型的性能优化是一个永恒的话题。当项目规模扩大、场景复杂度提升时&#xff0c;模型面数往往会成为性能瓶颈的首要因素。Simplygon作为业界知名的减面工具&#xff0c;虽然功能…...

AI Agent Harness Engineering 技术选型指南:根据场景选择合适的大模型与框架

AI Agent Harness Engineering 技术选型指南&#xff1a;根据场景选择合适的大模型与框架 引言 痛点引入 你是否遇到过这样的场景&#xff1f;产品经理拍板要做一个**“能帮企业HR自动筛选简历、邀约面试、生成入职指南并跟进试用期转正材料”**的“超级HR助手”AI Agent——…...

Linux ln 软硬链接详解——底层原理+生产实战+彻底区分(零踩坑)

前言很多新手永远分不清软硬链接&#xff0c;只会背“软链接像快捷方式、硬链接像副本”&#xff0c;一旦遇到生产删文件、日志切割、程序部署就翻车。本文从inode底层原理讲起&#xff0c;配合完整实战、对比、生产场景&#xff0c;让你彻底吃透 ln 软硬链接&#xff0c;面试、…...

1987年5月15日中午11-13点出生性格、运势和命运

人们常常对“出生时辰”怀有神秘的好奇&#xff0c;但从现代科学的角度看&#xff0c;出生时间对个体的影响并非玄学&#xff0c;而是可以找到生理学和心理学依据的。1987年4月24日晚上23点到24点之间出生&#xff0c;这个时间点恰好处在夜晚向深夜过渡的时段。抛开任何命理说法…...