【寒假day4】leetcode刷题

news/2024/5/8 18:32:16/文章来源:https://blog.csdn.net/bit_jie/article/details/128929835

🌈一、选择题

1.下列哪一个是析构函数的特征( )。

A: 析构函数定义只能在类体内    B: 一个类中只能定义一个析构函数
C: 析构函数名与类名相同       D: 析构函数可以有一个或多个参数
答案:B

答案解析:析构函数是构造函数的逆函数,它的功能是用来释放一个对象,它也是一种特殊

的构造函数。它具有如下特点:

  1. 函数名同类名,并前边加修饰符~。

  1. 定义该函数时不加返回类型。

  1. 该函数无参数。

  1. 该函数通常是系统在释放所创建对象时自动调用的。

  1. 一个类中只能有一个析构函数。

  1. 析构函数既能在类内定义,也能在类外定义。


2.如果有一个类是 myClass , 关于下面代码正确描述的是( )。

myClass::~myClass(){
delete this;
this = NULL;
}
A: 正确,我们避免了内存泄漏      B: 它会导致栈溢出
C: 无法编译通过                D: 这是不正确的,它没有释放任何成员变量
答案:C

答案解析:

  • 析构函数的作用:当对象生命周期结束后,收回对象占用的资源。

  • delete 的作用:用于收回new分配的内存空间。

  1. 再来看delete this这句代码: 在析构函数中delete this时,代码是可以通过编译的。但是,如果代码中具体创建了这个类的对象时,代码会在运行中崩溃。 delete实现是通过调用析构函数完成的,也就是会形成死循环造成栈溢出,并且delete清除的是堆上(new开辟的)的对象,但是不是所有的对象都是堆上开辟的在没有new的前提下对资源进行delete,就会导致运行崩溃。 但是这个还不是最关键的。

  1. 在析构函数中,this = NULL;

  1. 这一句会直接导致编译失败,因为 this指针的类型为 类类型 * const 。this指针本身的值是无法修改的。


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

C c;
void main()
{
A*pa=new A();
B b;
static D d;
delete pa;
}
A: A B C D     B: A B D C
C: A C D B     D: A C B D
答案:B

答案解析

  • 对于类A,是建立在堆上的对象指针pa,手动释放

  • 对于类B,是建立在栈上的对象 , main函数结束就释放

  • 对类C在静态存储区创建了一个对象c程序结束时候释放

  • 对类D也是在静态存储区建立对象d但是局部变量程序结束时候释放析构函数调用顺序。

首先手动释放pa, 所以会先调用A的析构函数,其次是C,B, D,编译器先构造的是全局对象C,然后是静态局部对象D,最后是普通对象B,所以三者的析构顺序完全相反,B->D->C,综上来说就是A->B->D->C。答案是B。


4.假定有类 AB ,有相应的构造函数定义,能正确执行()

AB a(4),b(5),c[3],*p[2]={&a,&b};
语句,请问执行完此语句后共调用该类的构造函数次数为( )。
A: 5    B: 4
C: 3    D: 9
答案:A

答案解析:

只有给对象分配内存才调用构造函数 AB a(4) 定义对象a, 调用了带一个参数的构造

AB b(5)跟上面的性质类似, 调用了带一个参数的构造

AB c[3] 跟上面的性质类似, 定义对象数组,调用无参构造3次

AB *p这至是一个指针,没有指向任何空间,更么有分配内存,不会调构造


5.下面有关类的静态成员和非静态成员,说法错误的是( )。

A: 静态成员变量存在与数据段,非静态成员需要实例化才会分配内存
B: 非静态成员函数中可以直接访问类中静态的成员
C: 静态成员函数中能访问非静态的成员
D: 非静态成员的生存期决定于该类对象的生存期,而静态成员生存期则与程序生命期相同
答案:C

答案解析:

静态成员变量:
1、所有对象共享同一份数据;
2、在编译阶段分配内存;
3、类内声明,类外初始化。
静态成员函数:
1、所有对象共享同一个函数;
2、静态成员函数只能访问静态成员变量。

A选项:静态成员存在于内存,非静态成员需要实例化才能分配内存。

B选项:静态成员属于类,非静态成员属于对象,对象必须实例化才存在,而类一直在,所以不可以用静态成员函数访问非静态成员,因为非静态可能不存在。因为静态成员存在于内存,所以非静态成员函数可以访问静态成员。所以B正确,C错误。

D选项:D选项不严谨,非静态成员函数的生存期决定于对象的生存期,不是类,静态成员的生存期取决于进程的生存期。




🌈二、编程题

🍄第1题:字符串压缩

思路分析:
这个题如果一个一个遍历,然后再数出每一个字符的个数,然后拼接成新字符,最后再和原字符比较的话,一点都不简单,而且特别繁琐。
这里的话可以考虑一下双指针解答:一个记录字母,一个记录字母的个数,简单明了,然后再利用一下to_string函数将数字转化为字符串,接下来一比较就完成了。
string compressString(string S) {int N = S.length();string res;  //拼接已经记录好的字符int i = 0;while (i < N) { int j = i;  //双指针i,jwhile (j < N && S[j] == S[i]) {j++;}res += S[i];   //先记录字符res += to_string(j - i);    //在把字符的个数的数字转化为字符i = j;        //再继续记录下一个字符}if (res.length() < S.length()) {return res;} else {return S;}
}

这个题的关键不是用不用to_string函数,而是双指针。难并不是看不懂那种,对于各位小伙伴来说都是小趴菜。这就不过多的说了。

今天就更新一道编程题了,开学了,休息一下!

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

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

相关文章

C语言(文件输入输出操作)

目录 一.文件 1.文件概念 2.文本模式和二进制模式 (1)模式结尾映射 (2)存储精度 3.I/O级别 一.文件 1.文件概念 文件:在磁盘或固态硬盘上一段已命名的存储区。对于C来说&#xff0c;文件就是一系列连续的字节&#xff0c;每个字节都能被单独读取&#xff08;在计算机当…

.Net Core对于`RabbitMQ`封装分布式事件总线

首先我们需要了解到分布式事件总线是什么&#xff1b;分布式事件总线是一种在分布式系统中提供事件通知、订阅和发布机制的技术。它允许多个组件或微服务之间的协作和通信&#xff0c;而无需直接耦合或了解彼此的实现细节。通过事件总线&#xff0c;组件或微服务可以通过发布或…

大家心心念念的RocketMQ5.x入门手册来喽

1、前言 为了更好的拥抱云原生&#xff0c;RocketMQ5.x架构进行了大的重构&#xff0c;提出了存储与计算分离的设计架构&#xff0c;架构设计图如下所示&#xff1a; RocketMQ5.x提供了一套非常建议的消息发送、消费API&#xff0c;并统一放在Apache顶级开源项目rocketmq-clie…

TC3xx FlexRay™ 协议控制器 (E-Ray)-01

1 FlexRay™ 协议控制器 (E-Ray) E-Ray IP 模块根据为汽车应用开发的 FlexRay™ 协议规范 v2.1 执行通信【performs communication according to the FlexRay™ 1) protocol specification v2.1】。使用最大指定时钟&#xff0c;比特率可以编程为高达 10 Mbit/s 的值。连接到物…

就现在!为元宇宙和Web3对互联网的改造做准备!

欢迎来到Hubbleverse &#x1f30d; 关注我们 关注宇宙新鲜事 &#x1f4cc; 预计阅读时长&#xff1a;8分钟 本文仅代表作者个人观点&#xff0c;不代表平台意见&#xff0c;不构成投资建议。 如今&#xff0c;互联网是各种不同的网站、应用程序和平台的集合。由于彼此分离…

STM32单片机GSM短信自动存取快递柜

实践制作DIY- GC0104-自动存取快递柜 一、功能说明&#xff1a; 基于STM32单片机设计-自动存取快递柜 二、功能介绍&#xff1a; STM32F103C系列最小系统板0.96寸OLED显示器DY-SV17F串口语音播报模块4*4矩阵键盘GSM短信模块4路舵机&#xff08;模拟4个柜子&#xff09; ***…

【openGauss实战9】深度分析分区表

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

Syzkaller学习笔记---更新syz-extract/syz-sysgen(一)

Syzkaller学习笔记Syzkaller 安装文件系统内核Android common kernel参考文献syzkaller 源码阅读笔记-1前言syz-extractmainarchListcreateArchesworkerprocessArchprocessFileextractcheckUnsupportedCallsarchList小结syz-sysgenmainprocessJob()generateExecutorSyscalls()w…

2016-ICLR-Order Matters- Sequence to sequence for sets

2016-ICLR-Order Matters- Sequence to sequence for sets Paper: [https://arxiv.org/pdf/1511.06391.pdf](https://arxiv.org/pdf/1511.06391.pdf) Code: 顺序重要性&#xff1a;集合的顺序到序列 摘要 许多需要从观察序列映射或映射到观察序列的复杂任务现在可以使用序列…

C++创建多线程的方法总结

下个迭代有个任务很有趣&#xff0c;用大量的线程去访问一个接口&#xff0c;直至其崩溃为止&#xff0c;这就需要多线程的知识&#xff0c;这也不是什么难事&#xff0c;总结一下C中的多线程方法&#xff1a;std、boost、pthread、windows api。 目录 一、多线程预备知识 二…

基于SpringBoot实现ChatGPT-QQ机器人

概述 近期ChatGPT火爆全球&#xff0c;在其官方网站上也列举了非常全面的应用案例&#xff0c;仅仅上线两个月活跃用户数已经达到1亿&#xff0c;成为历史上用户数增长最快的面向消费者的应用 快速体验 OpenAI官网对外提供了标准的 API 接口&#xff0c;可以通过HTTP请求进行…

简单的密码加密

用户的密码必须被加密后再存储到数据库, 否则就存在用户账号安全问题用户使用的原始密码通常称之为"原文"或"明文", 经过算法的运算, 得到的结果通常称之为"密文"在处理密码加密时, 不可以使用任何加密算法, 因为所有加密算法都是可以被逆向运算…

centos学习记录

遇到的问题及其解决办法 centos7安装图形化界面 yum groupinstall ‘X Window System’ yum groupinstall -y ‘GNOME Desktop’ 安装完成后输入init 5进入图形化界面 centos7安装vmware-tools 第一步卸载open-vm-tools 输入命令 yum remove open-vm-tools 输入命令 reboot 在…

微前端基础

一、什么是微前端 微前端是一种软件架构&#xff0c;可以将前端应用拆解成一些更小的能够独立开发部署的微型应用&#xff0c;然后再将这些微应用进行组合使其成为整体应用的架构模式。微前端架构类似于组件架构&#xff0c;但不同的是&#xff0c;组件不能独立构建和发布&…

大数据时代的小数据神器 - asqlcell

自从Google发布了经典的MapReduce论文&#xff0c;以及Yahoo开源了Hadoop的实现&#xff0c;大数据这个词就成为了一个行业的热门。在不断提高的机器性能和各种层出不穷的工具框架加持下&#xff0c;数据分析开始从过去的采样抽查变成全量整体&#xff0c;原先被抽样丢弃的隐藏…

网络安全实验室7.综合关

7.综合关 1.渗透测试第一期 url&#xff1a;http://lab1.xseclab.com/base14_2d7aae2ae829d1d5f45c59e8046bbc54/ 进入忘记密码页面&#xff0c;右键查看源码&#xff0c;发现一个手机号 解题思路&#xff1a;通过给admin用户绑定13388758688手机号码&#xff0c;然后再进行…

使用vue3,vite,less,flask,python从零开始学习硅谷外卖(16-40集)

严正声明&#xff01; 重要的事情说一遍&#xff0c;本文章仅供分享&#xff0c;文章和代码都是开源的&#xff0c;严禁以此牟利&#xff0c;严禁侵犯尚硅谷原作视频的任何权益&#xff0c;我知道学习编程的人各种各样的心思都有&#xff0c;但这不是你对开源社区侵权的理由&am…

【算法题解】15. 设计最小栈

这是一道 中等难度 的题。 题目来自&#xff1a;leetcode 题目 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在 常数时间 内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void p…

驱动 | Linux | NVMe 不完全总结

本文主要参考这里 1’ 2 的解析和 linux 源码 3。 此处推荐一个可以便捷查看 linux 源码的网站 bootlin 4。 更新&#xff1a;2022 / 02 / 11 驱动 | Linux | NVMe 不完全总结NVMe 的前世今生从系统角度看 NVMe 驱动NVMe CommandPCI 总线从架构角度看 NVMe 驱动NVMe 驱动的文件…

详细解读503服务不可用的错误以及如何解决503服务不可用

文章目录1. 问题引言2. 什么是503服务不可用错误3 尝试解决问题3.1 重新加载页面3.2 检查该站点是否为其他人关闭3.3 重新启动设备3.3 联系网站4. 其他解决问的方法1. 问题引言 你以前遇到过错误503吗&#xff1f; 例如&#xff0c;您可能会收到消息&#xff0c;如503服务不可…