- 博客(17)
- 收藏
- 关注
原创 C++继承知识点:派生类的默认成员函数
除了构造以外,其他的析构函数、拷贝构造、运算符重载不用显示写,编译器给的足够,但是如果要有内存空间要清理,那么就要显示加上父类得作用域,并且显式调用,但是析构函数完全不需要显示调用。拷贝构造默认行为:子类成员:内置类型会完成它的值拷贝(浅拷贝),自定义类型会调用这个类型的拷贝构造+父类成员(必须调用父类的拷贝构造)所以不需要显示写析构函数,编译器会默认先调用子类析构函数再调用父类。默认成员函数:不写,编译器默认生成的行为是什么?默认生成的不符合我们的要求,自己写,得怎么写。2.如果是深拷贝,就要自己写。
2025-08-13 11:30:20
326
原创 C++(string关键字的遍历)
2.如果遍历的值过大,使用引用减少拷贝。自动取容器数据赋值给左边的值,这个是拷贝,所以不可以直接修改它的值,只能通过引用来修改。范围for:自动取容器数据赋值给左边的值,自动判断结束,自动++注意:迭代器不是指针,可以把迭代器想象成类似指针的东西。auto可以简化代码,替代长类型(写起来长的类型)范围for'的修改要用引用返回,因为范围for。引用使用的条件:1.要修改里面的内容。1.3迭代器应用(迭代器遍历链表)3.范围for(C++11支持)1.1 用下表+[ ]3.1范围for的修改。
2025-06-27 10:47:25
177
原创 C++中动态内存管理,new和delete的使用
⽆参构造函数、全缺省构造函数、我们不写构造时编译器默认⽣成的构造函数,都叫做默认构造函数。1.在自定义类型中,new出了开空间,还有调用内置类型构造函数初始化的作用。如图所示,分别对ptr1,ptr2,ptr3,ptr4进行初始化。2.delete除了释放空间,还有调用析构函数的作用。注意:使用new时必须有默认构造函数(一、在内置类型类型中的使用。二、在自定义类型中的使用。
2025-05-24 21:47:08
131
原创 C++知识点const成员函数
解决办法:在成员函数尾部加上const,相当于权限缩小,就算不是const成员函数也可以访问,因为权限不可以放大,但是可以缩小。不能把所有成员函数都加上const,如果传过来是const对象这个没问题,如果是普通对象就不能修改,所以会付出一定的代价。(2)const实际实际修饰该成员函数隐含this指针,表明在该成员函数中不能对类的任何成员进行修改co。一、将const修饰成员的函数叫做const成员函数,const修饰成员函数放到成员函数的右边。
2025-03-24 15:46:45
233
原创 C++类和对象知识点(拷贝构造)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7.注意以下这个代码:不是所有的拷贝构造都能用传引用返回(局部对象不能用传引用返回)4.若未显式定义拷贝构造,编译器会自动生成拷贝构造函数,自动生成拷贝构造对内置类型成员变量会完成值拷贝/浅拷贝。
2025-03-15 10:35:42
317
原创 C++知识点(析构函数)
7.如果类中没有申请资源时(malloc/realloc)析构函数可以不写,直接使用编辑器默认的析构函数如:Date;如果默认生成析构函数可以用,也不用显示的写析构函数,例如:MyQueue,但是有资源申请时候,一定要自己写析构函数,否则会造成资源泄漏例如Stack。可以近似看成与构造函数作用相反,构造函数是对对象进行初始化工作,而析构函数可以看成是对对象资源进行清理释放工作。3.一个类只能有一个析构函数,如果没有显示的定义,系统会自动生成默认析构函数。4.对象生命周期结束时,系统会自动调用析构函数(
2025-03-14 16:51:52
303
原创 每日一道算法题(1)双指针,和为s的两个数
sum>target最小的数和最大的数之和大于目标值target那么就让最右边的值(right--)因为之有让最大值变小才能找到目标值target。思路:利用左右两个指针分别指向数组第一个元素和最后一个元素,判断两个数之和sum和target(目标值作比较)此时分三种情况。sum<target最小的数与最大的数之和小于目标值,那么就让(right++),让最小的数变大才能找到目标值。解法二:利用单调性(数组有序的性质)解决问题。如果sum==target,直接返回目标值。(时间复杂度o(n))
2025-03-12 20:31:32
110
1
原创 类和对象(构造函数)
7.我们不写,编译器会默认生成的构造,对内质类型(int,double,float....)成员变量初始化没有要求,也就是说是否初始化是不确定的看编辑器,对于自定义类型的成员变量,没有默认构造函数就会报错,我们就要初始化这个成员变量,需要用初始化列表才能解决。构造函数的本质是代替我们用c语言创建stack和quene(栈和队列)时的初始化函数,构造函数自动调用的特点就完美替代了init函数。构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数主要任务不是开空间创造对象(
2025-03-11 20:49:58
202
原创 c++知识点(2)引用
引用一个const对象,但必须用const引用,const引用可以引用普通对象,因为对象的访问权限在引用的过程可以缩小,但是不能放大。5.sizeof中含义不同,引用结果为引类型的大小(随着类型的改变而改变),而指针始终是地址空间所占字节个数。c++中指针和引用就像两个性格迥异的兄弟,指针是哥哥,引用时弟弟,在实践中他们相辅相成。1.语法概念上引用是一个变量取别名不开空间,指针是存储一个变量的地址,要开空间。6.指针很容易出现空指针和野指针的问题,引用很少出现,引用使用起来相对安全一些。
2025-03-04 21:42:38
240
原创 c++的输入和输出和缺省参数
(1)缺省参数是生命或者定义函数时为函数指定一个缺省值,在调用函数时,如果没有指定参数,则采用该形参的缺省值,并且缺省参数分为全缺省和半缺省。1.(1)<iostream>是input output stream的缩写,是标准输入、输出流库,定义了标准的输入输出对象。(3)函数声明和定义分离时,缺省参数不能在函数定义和声明中同时出现,规定必须函数声明给缺省值。(3)std::cout是ostream类的对象,标准输出流。(2)std::cin是istream类的对象,标准输入流。
2025-03-01 12:25:40
203
原创 c++基本概念命名空间namespace(1)
(3)项目工程中多文件中定义同名namespace不会产生冲突(比如我们在创建队列和栈的时候会选择把头文件和测试文件放到两个文件夹中,我们把这两个文件分别全用namespace bit这个域包裹不会发生命名冲突,系统会自动合并到一起)(1)namespace中可以包含变量、函数、结构体等,并且namespace默认定义到全局域,局部域和全局域会影响生命周期,命名空间域和类域不会影响生命周期。(2)namespace只能定义在全局域,并且可以嵌套定义。2namespace命名空间,c++基本概念和常识。
2025-03-01 11:12:27
154
原创 oj算法题用两个队列实现栈
出栈:找不为空的队列,将size-1个数据导入到另一个队列中。取栈顶元素:找不为空的队列取队尾元素。入栈:往不为空的队列插入数据。
2025-01-19 11:36:03
259
原创 队列的相关概念及其代码
一、概念:只允许在⼀端进⾏插⼊数据操作,在另⼀端进⾏删除数据操作的特殊线性表,队列具有先进先出的特性。6.取队头、队尾元素。
2025-01-12 15:25:39
116
原创 栈的概念及代码
一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端叫栈顶,另一端为栈底,栈中的元素遵守后进先出。注:不可以循环出栈:栈里面数据不可以被遍历,也不可被随机访问。一.头文件创建及函数声明。7.输出栈有效数据个数。
2025-01-08 13:50:37
346
原创 顺序表算法题2(删除有序数组中重复项)
1.思路:定义两个变量src 和dst,dst指向第一个位置,src指向后一个位置。(2)不相等 dst++,num[dst]=num[src];先判断src和dst是否相等。(1)相等src++
2024-11-29 17:24:12
111
1
原创 顺序表算法题(移除元素)
思路:定义两个变量分别指向当前数组第一个位置判断num[src]石否等于val。(2)不相等num[dst]=num[src],src++,dst++;1.顺序表尾插的时间复杂度O(1)2.头插时间复杂度为O(n)(1)相等 src++;
2024-11-29 16:42:31
384
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人