【寒假day4】leetcode刷题
🌈一、选择题
❤1.下列哪一个是析构函数的特征( )。
A: 析构函数定义只能在类体内 B: 一个类中只能定义一个析构函数
C: 析构函数名与类名相同 D: 析构函数可以有一个或多个参数
答案:B
答案解析:析构函数是构造函数的逆函数,它的功能是用来释放一个对象,它也是一种特殊
的构造函数。它具有如下特点:
函数名同类名,并前边加修饰符~。
定义该函数时不加返回类型。
该函数无参数。
该函数通常是系统在释放所创建对象时自动调用的。
一个类中只能有一个析构函数。
析构函数既能在类内定义,也能在类外定义。
❤2.如果有一个类是 myClass , 关于下面代码正确描述的是( )。
myClass::~myClass(){
delete this;
this = NULL;
}
A: 正确,我们避免了内存泄漏 B: 它会导致栈溢出
C: 无法编译通过 D: 这是不正确的,它没有释放任何成员变量
答案:C
答案解析:
析构函数的作用:当对象生命周期结束后,收回对象占用的资源。
delete 的作用:用于收回new分配的内存空间。
再来看delete this这句代码: 在析构函数中delete this时,代码是可以通过编译的。但是,如果代码中具体创建了这个类的对象时,代码会在运行中崩溃。 delete实现是通过调用析构函数完成的,也就是会形成死循环造成栈溢出,并且delete清除的是堆上(new开辟的)的对象,但是不是所有的对象都是堆上开辟的。在没有new的前提下对资源进行delete,就会导致运行崩溃。 但是这个还不是最关键的。
在析构函数中,this = NULL;
这一句会直接导致编译失败,因为 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函数,而是双指针。难并不是看不懂那种,对于各位小伙伴来说都是小趴菜。这就不过多的说了。
今天就更新一道编程题了,开学了,休息一下!
相关文章:
【寒假day4】leetcode刷题
🌈一、选择题❤1.下列哪一个是析构函数的特征( )。A: 析构函数定义只能在类体内 B: 一个类中只能定义一个析构函数 C: 析构函数名与类名相同 D: 析构函数可以有一个或多个参数答案:B答案解析:析构函数是构造函…...
【竞赛题】6355. 统计公平数对的数目
题目: 给你一个下标从 0 开始、长度为 n 的整数数组 nums ,和两个整数 lower 和 upper ,返回 公平数对的数目 。 如果 (i, j) 数对满足以下情况,则认为它是一个 公平数对 : 0 < i < j < n,且 l…...
Redis集群搭建(主从、哨兵、分片)
1.单机安装Redis 首先需要安装Redis所需要的依赖: yum install -y gcc tcl然后将课前资料提供的Redis安装包上传到虚拟机的任意目录: 例如,我放到了/tmp目录: 解压缩: tar -xzf redis-6.2.4.tar.gz解压后࿱…...
Dart语法基础补充
Asynchrony support Dart 库中充满了返回 Future 或 Stream 对象的函数。 这些函数是异步的:它们在设置一个可能耗时的操作(例如 I/O)后返回,而不等待该操作完成。 async 和 await 关键字支持异步编程,让编写看起来类…...
Nginx - 深入理解nginx的处理请求、进程关系和配置文件重载
概述 Nginx的系统学习整理的第三篇博客,主要介绍nginx的应用场景和架构基础,以便更好的理解,再生产环境中进行性能调优。 Nginx的三个主要应用场景 1.静态资源服务,通过本地文件系统提供服务 2.反向代理服务,强大的性…...
华为OD机试 - 服务依赖(Python)| 真题含思路
服务依赖 题目 在某系统中有众多服务,每个服务用字符串(只包含字母和数字,长度<=10)唯一标识,服务间可能有依赖关系,如A依赖B,则当 B 故障时导致 A 也故障。 传递具有依赖性,如 A依赖 B,B 依赖 C,当 C 故障时导致 B 故障,也导致 A 故障。给出所有依赖关系以及当…...
html的表单标签(form)
目录标题1、表单标签主要有三大类:2、表单标签中常见的属性3、例子代码及结果4、注意:5、表单中特殊的属性表单标签可以用来数据交互,而前面学的六个标签只能发送不能接收。 表单标签的作用就是数据交互1、表单标签主要有三大类: …...
手把手教你部署ruoyi前后端分离版本
下载源码(当前版本3.8.5)RuoYi-Vue: 🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本 (gitee.com)创建数据库(一定要是这三个&…...
JUC并发编程 Ⅱ -- 共享模型之管程(上)
文章目录共享带来的问题临界区 Critical Section竞态条件 Race Conditionsynchronized 解决方案synchronized语法解决方案思考面向对象改进方法上的 synchronized线程八锁变量的线程安全分析成员变量和静态变量是否线程安全?局部变量是否线程安全?局部变…...
File类
🏡个人主页 : 守夜人st 🚀系列专栏:Java …持续更新中敬请关注… 🙉博主简介:软件工程专业,在校学生,写博客是为了总结回顾一些所学知识点 ✈️推荐一款模拟面试,刷题神器…...
ModSecurity规则功能说明
ModSecurity规则功能说明 owasp规则: 第一部分:基础规则集 modsecurity_crs_20_protocol_violations.conf HTTP协议规范相关规则modsecurity_crs_21_protocol_anomalies.conf HTTP协议规范相关规则modsecurity_crs_23_request_limits.conf HTTP协议大小长度限制相…...
医学生考研考博太卷,一篇文章轻松助力上岸(一)
考研考博太卷了,卷不过,想没想过本科发一篇文章呢? 330分考研人淘汰390分考研人这个故事,大家应该都知道吧。 本专栏带你六个月内,搞定一篇文章,本科生发文章也很容易。 在卷考研的同时,再卷…...
操作系统(一): 进程和线程,进程的多种状态以及进程的调度算法
文章目录前言一、进程和线程1. 进程2. 线程二、进程和线程的区别(面试常问)三、进程调度算法3.1. 批处理系统3.2. 交互式系统3.2.1 时间片轮转3.2.2 优先级调度3.2.3 多级别反馈队列3.3. 实时系统四、进程的状态五、进程同步5.1 什么是进程同步5.2 进程同步应该遵循的几点原则前…...
【随笔】我迟到的2022年度总结:突破零粉丝,1个月涨粉1000+,2023年目标3万+
前言 我是21年12月注册的csdn, 作为用户平时看看文章,从未参与过写文章这件事。 但这一年的时间我见证了很多新号的崛起,有的号我平时关注比较多,看着他们从零粉丝突破了三万甚至五万的粉丝量。 在csdn上遇到了我的贵人&#x…...
SpringCloud-Netflix学习笔记13——Zuul路由网关
什么是Zuul? Zuul包含了对请求的路由和过滤两个最主要的功能。 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能…...
Hive 之 DDL操作
DDL 操作是用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等 1. 数据库 1.1 创建数据库 数据库在 HDFS 上的默认存储路径是 /user/hive/warehouse/*.db CREATE (DATABASE|SCHEMA) [IF NOT EX…...
2. SpringMVC 请求与响应
文章目录1. 请求映射路径2. 请求参数2.1 get 请求发送普通参数2.2 post 请求发送普通参数2.3 五种类型的参数传递2.4.1 普通参数2.4.2 POJO 数据类型2.4.3 嵌套 POJO 类型参数2.4.4 数组类型参数2.4.5 集合类型参数3. json 数据传输参数(重点)3.1 传输 j…...
leaflet 读取上传的geojson文件,转换为wkt文件(057)
第057个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中上传geojson文件,解析geojson文件并转换为WKT,并在地图上显示图片。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共128行)安装 @terraf…...
面试题-前端开发Vue篇(答案超详细)
文章目录 如何实现跨域?JSONP原理和缺点谈谈你对DOM的理解及常用的DOM API说说你对 Vue 的理解说说 Vue 的优缺点什么是虚拟 DOM请描述下 vue 的生命周期是什么vue 如何监听键盘事件?watch 怎么深度监听对象变化删除数组用 delete 和 Vue.delete 有什么区别watch 和计算属性有…...
PTA甲级-1010 Radix c++
文章目录Input Specification:Output Specification:Sample Input 1:Sample Output 1:Sample Input 2:Sample Output 2:一、题干大意![在这里插入图片描述](https://img-blog.csdnimg.cn/68d84d3ea86e4aaab002152ae8472e05.png#pic_center)二、题解要点三、具体实现总结Given a…...
【项目重构】第1次思考
回顾与反思 2022年~至今(2023年2月),一共重构了2个项目。 第1个项目在重构的时候,总是想着把别人的代码copy过来,改一改,这就算重构好了。这样做效率太低,原因是前人写的代码不一定有很多注释…...
Java:SpringMVC的使用(2)
目录第十二章 REST风格CRUD练习12.1 搭建环境12.2 实现功能思路第十三章 SpringMVC消息转换器13.1 消息转换器概述13.2 使用消息转换器处理请求报文(1) 使用RequestBody获取请求体(2) 使用HttpEntity\<T>获取请求体及请求头13.3 使用消息转换器处理响应报文(1) 使用Respo…...
Elasticsearch7.8.0版本进阶——分布式集群(应对故障)
目录一、Elasticsearch集群的安装1.1、Elasticsearch集群的安装(win10环境)1.2、Elasticsearch集群的安装(linux环境)二、应对故障(win10环境集群演示)2.1、启动集群(三个节点)2.2、…...
【LeetCode】每日一题(2)
目录 题目:1138. 字母板上的路径 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:1138. 字母板上的路径 - 力扣&am…...
软件设计师教程(六)计算机系统知识-操作系统知识
软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 软件设计师教程(…...
Zookeeper下载安装与集群搭建
Zookeeper下载安装与集群搭建1.下载安装1.1 下载安装1.2 配置启动2.集群搭建2.1 搭建要求2.2 准备工作2.3 配置集群2.4 启动集群2.5 模拟集群异常1.下载安装 1.1 下载安装 1、环境准备 ZooKeeper服务器是用Java创建的,它运行在JVM之上。需要安装JDK 7或更高版本。…...
Filter防火墙(8)
实验目的 1、了解个人防火墙的基本工作原理; 2、掌握Filter防火墙的配置。 预备知识防火墙 防火墙(Firewall)是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的数据通过。防火墙可以是一台专属的硬…...
Spring事务的传播级别——包你一文通
文章目录一、简单说明二、具体案例描述2.1.PROPAGATION_REQUIRED2.2.PROPAGATION_REQUIRED_NEW2.3.PROPAGATION_SUPPORTS2.4.PROPAGATION_NOT_SUPPORTED2.5.PROPAGATION_MANDATORY2.6.PROPAGATION_NEVER2.7.PROPAGATION_NESTED三、总结3.1、PROPAGATION_REQUIRED3.2、PROPAGATI…...
C语言(C预编译指令)
目录 1.undef 2.条件编译#ifdef,#else和#endif 3.#ifndef 4.#if和#elif 5.预定义宏 6.#line和#error 7.#pragma 1.undef #undef指令用于取消已定义的#define指令 #define LIMIT 400 #undef LIMIT 如果想使用一个名称但又不确定之前是否已经用过,为了安全起…...
JMeter 接口测试/并发测试/性能测试
Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对Http接口的测试。因为再做接口测试时可以设置线程组,所以也可做接口性能测试。本篇使用JMeter完成了一个…...
成都抖音推广公司/济南网站自然优化
删除链表的倒数第n个节点 OJ 地址:删除链表的倒数第n个节点 /*** struct ListNode {* int val;* struct ListNode *next;* };*/class Solution { public:/*** * param head ListNode类 * param n int整型 * return ListNode类*/ListNode* removeNthFromEnd(ListNo…...
潍坊比较大的网站制作公司/如何自创网站
获得当天的日期date %Y-%m-%d输出: 2011-07-28将当前日期赋值给DATE变量DATE$(date %Y%m%d)有时候我们需要使用今天之前或者往后的日期,这时可以使用date的 -d参数获取明天的日期date -d next-day %Y%m%d获取昨天的日期date -d last-day %Y%m%d获取上个月…...
wordpress mac下载文件/免费行情软件网站下载大全
概要 风格转换已成功应用于照片,生成逼真的西方绘画。然而,由于中西绘画技法的内在差异,直接套用已有的方法,对中国水墨画风格的转换并不能产生令人满意的效果。本文提出了一种基于ChipGAN的端到端( end-to-end&am…...
做视频网站用哪个模板/新疆今日头条新闻
众所周知,对于任何组织而言,最大的挑战是不断变化的需求。找到一种方法来快速解决这些需求,同时降低交付质量。大多数组织遵循的敏捷软件开发方法在处理这种竞争情况中起着至关重要的作用。敏捷方法要求集成产品组件,在预生产环境…...
最近重大新闻事件2021/太原seo招聘
源码地址:https://github.com/YANGKANG01/Spring-Boot-Demo 代码生成操作 在pom.xml文件中引入以下包: <!-- mybatisplus与springboot整合 --> <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boo…...
四川泸州做网站的公司有哪些/数字营销策划
1. 加载DOM $(document).ready(function(){ //code }); //简写 $(function(){ }) 与window.onload的区别:jquery的ready函数在DOM树加载完后即可执行,而window.onload则必须等待网页中所有元素加载完后才执行。window.onload只能执行一次,而r…...