- 博客(45)
- 收藏
- 关注
原创 【C++】类的默认成员函数
1.函数名与类名相同2.无返回值3.构造函数可以重载1.函数名是类名,前面加~2.无参数、无返回值3.一个类只能有一个析构函数,不允许重载4.未定义析构函数时,编译器为类生成默认的析构函数1.函数名是类名拷贝构造是构造函数的重载函数。2.参数只有一个,必须是同类型类对象的引用,一般用const修饰使用传值编译器会报错(引发无穷递归)因为传值做参数,会调用拷贝构造函数。const修饰参数的原因是,为了让const类型的实参也可以调用该函数。引用的权限问题。3.无返回值。
2025-02-16 15:02:03
861
原创 【C++】class类(类的定义、成员访问、类的大小、this指针)
struct的升级版——class//类体:成员函数(方法)和成员变量(属性)class是定义类的关键字。className是类名,{}里是类的主体。注意}最后的分号不能省略。类中的内容称为类的成员:变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。c++的类可以函数在上,变量在下。或者变量在上,函数在下。c++把类看作整体,搜索的时候在整个类里找。顺序不重要,不影响效率。c语言习惯先定义或者声明再使用。c语言每个变量和函数之间没有必定的关联,是独立的。class算不算一个域?算。
2025-02-14 16:32:15
637
原创 【C++】命名空间、函数缺省参数、函数重载、引用、inline内联函数
2.using关键字,只改变命名空间内部成员的作用域,不改变生命周期。c++编译器生成的符号表,符号表中的函数名是经过函数名修饰规则修饰的,形参列表不同的函数,函数名不同。在链接阶段,本源文件调用其他源文件的函数,需要去其他.o文件生成的符号表中按函数名查找函数地址。为已经存在的变量取别名,不开辟新的内存空间,底层通过指针实现,指向被引用对象的地址。1.生成目标类型的临时变量。c语言编译器,生成符号表中的函数名就是原函数名,无法区分同名函数。定义功能类似的函数,根据实参自动调用重载的函数中,匹配的函数。
2025-02-13 17:53:23
679
原创 【Qt 常用控件】多元素控件(QListWidget、QTableWidgt、QTreeWidget)
*View和**Widget的区别?**View的实现更底层,**Widget是基于**View封装实现的更易用的类型。**View使用MVC结构MVC是软件开发中 经典的 软件结构 组织形式,软件设计模式。M(model)模型。管理应用程序的核心数据和业务逻辑。并且通知视图和控制器数据已经发生变化。V(view)视图,界面。显示数据,并接受用户输入。C(controller)控制器。衔接M和V,处理用户输入,更新模型和视图。**View只负责视图,并不具备其他功能,如数据存储、业务逻辑。
2025-02-11 21:02:47
1157
原创 【Qt 常用控件】输入类控件1(QLineEdit和QTextEdit 输入框)
QLineEdit::Normal:默认值,输入什么显示什么。来定义字符的集合,帮助你查找、替换、提取或验证文本数据。功能:单行输入框、可以输入一段文本,但不能换行。参数1:QString&,不是 const的。通过带参数的信号槽得到的文本,是const的。如果设置了验证器,必须验证通过才能发出信号。当通过代码方式修改文本,也能触发该信号。当通过代码方式修改文本,不能触发该信号。只能由使用者修改输入框内容时,才会触发。当选中的文本改变时,发出该信号。当文本内容改变时,发出信号。当文本内容改变时,发出信号。
2025-02-07 22:05:42
1141
原创 【Qt 常用控件】显示类控件2(QLCDNumber、QProgressBar、QCalenderWidget)
为了提高编译速度,#include包含的头文件,编译时会直接展开被包含的头文件,并且一个头文件中可能嵌套包含很多其他头文件,逐个展开会消耗更多的时间。QTimer内部有一个信号,timeout,每次定时器设置的时间到达,都会触发一次timeout信号。槽函数,一般也是由main函数所在线程(主线程)调用的,在槽函数中修改界面是可行的。对timeout信号关联一个自定义的槽函数,在槽函数内部对lcdnuber的值进行-1操作。读取一个文件,可以获取文件的总大小,每读取一部分数据,更新一次进度条的值。
2025-01-24 14:23:39
1271
原创 【Qt 常用控件】显示类控件1(QLabel)
resize这种事件,是一个连续的过程(从a一点点到b的过程),就会触发一系列的resize事件。Markdown是一种轻量级的「标记语言」,提供各种特殊符号,表示不同的样式/格式。在格式方面,可以有不同的字体、字号、字体颜色、加粗、倾斜、下划线等样式,并且可以插入多媒体元素,像图片、视频、音频,以及超链接、表格、图表等。设置后,对label内的所有行都缩进,不只是首行缩进。仅由字符(字母、数字、标点符号等)组成,是最基本的文字信息载体。绑定伙伴关系后,利用QLabel文本中的&符,为伙伴设置快捷键。
2025-01-20 22:59:03
1109
原创 【Qt 常用控件】按钮类(QPushButton、QRadioButton、QCheckBox)
text按钮显示文本icon按钮图标iconSize按钮图标尺寸shortCut按钮对应快捷键autoRepeat点击鼠标是否重复触发按钮。true,点击一次,连续触发。false,点击一次,触发一次连续触发的延迟时间。点击过多少时间后,开始重复触发重复触发的周期。
2025-01-17 19:28:25
1087
原创 【Qt】QWidget核心属性2(windowOpacity、cursor、font、toolTip、focusPolicy、styleSheet)
方法:将图片资源导入Qt项目,qrc文件中,使用该图片。1.创建.qrc文件管理图片资源2.添加前缀、虚拟目录3.使用图片做光标样式。
2025-01-13 19:56:42
695
原创 【Qt】控件概述和QWidget核心属性1(enabled、geometry、windowTitle、windowIcon、QRC机制)
界面上各种元素、各种部分的统称(如按钮、输入框、下拉框、单选复选框...)Qt作为GUI开发框架,内置了各种的常用控件,并支持自定义控件。
2025-01-07 00:01:09
956
原创 【Qt】信号和槽机制(connect、自定义信号和槽、emit、带参信号槽、lamda作槽函数、机制意义)
1.可以作为普通成员函数声明定义2.public slots: 函数声明添加一个成员函数,作为自定义信号处理的槽函数。alt+回车,添加函数定义button->setText("按钮");delete ui;//按下按钮,修改窗口标题this->setWindowTitle("按钮已经按下");1.右键,转到槽,选择信号自动添加函数声明和定义2.定义槽函数原理:如何实现关联信号和槽?ui文件生成的头文件内部调用,关联函数。该函数自动将信号和符合命名规则的槽函数关联。
2024-12-31 15:43:03
1191
原创 【Qt】编辑框/按钮控件---实现HelloWorld
编辑框:单行编辑框QLineEdit 多行编辑框QTextEdit1.图形化方式使用QLineEdit可以看到text属性设置为Hello World可以在文本框输入数据。2.代码方式。
2024-12-26 00:10:15
740
原创 【Qt】对象树(生命周期管理)和字符集(cout打印乱码问题)
技巧:光标放在函数声明上,alt+enter,选项中选择添加定义,自动在对应的cpp文件中添加相同的函数定义。
2024-12-25 00:03:55
738
原创 【Qt】了解和HelloWorld
QT是一个跨平台的C++图形化界面应用程序开发框架。常应用于PC端桌面应用开发。特点:面向对象,易于拓展,提供基于组件的开发模式,可以通过简单的拖拽和组合来实现复杂的应用程序,同时也可以使用C++语言进行高级开发。优势:1.跨平台,支持Windows、Linux、Mac系统、嵌入式系统。2.一定程度简化内存回收机制(半自动的垃圾回收机制、尽可能不影响程序的运行效率)3.可以进行嵌入式开发。
2024-12-24 19:57:00
1147
原创 搭建VUE+VScode+elementUI环境遇到的问题
估计习惯linux命令的人,都会在windows下跟我有同样的习惯,毕竟不少命令都兼容了,不会想到where它就没兼容,查了一些资料才知道,powershell这货把where给了别的命令,而用来查路径的是。
2024-09-05 09:48:02
738
1
原创 【Linux】POSIX线程库——线程控制
为了返回任意类型的对象,所以传指针返回。用户接收指针后自己强转类型就行。(类比模板。同理,回调函数的参数是void*的原因也就明白喽。
2024-05-20 18:33:50
954
原创 【Linux】进程间通信 | 管道
操作系统以读和写的方式打开同一个管道文件,填充调用进程的文件描述符表时,写入一个读方式打开的文件指针,再写入一个写方式打开的文件指针。2.另一个进程打开同一个文件,OS不再创建一个新的struct file对象,而是在该进程的文件描述符表里填入文件的file*指针。操作系统创建管道文件struct file对象,以读和写的方式打开同一个管道文件,并将文件指针填充到调用进程的文件描述符表。4.读端关闭,OS给写进程发送信号,终止写进程,进程异常退出(waitpid可读到退出信号)父进程创建多个管道和子进程。
2024-03-09 16:05:36
852
原创 【Linux】磁盘LBA、CHS寻址 | 文件系统
打开文件,初始化FILE结构体,里面包含文件描述符、缓冲区、刷新方式等。进程IO操作,将数据写入用户层FILE缓冲区,然后用户的刷新操作,是从用户缓冲区刷新到内核缓冲区。由OS自主决定刷新策略,刷新到外设。可调用fflush,内部调用了fsync(fp->fileno)//强制要求OS进行外设刷新;上面是打开文件与OS的关系,未打开的文件OS又如何管理呢?
2024-03-01 17:49:26
2002
1
原创 C++——AVL树
AVL树:平衡搜索二叉树二叉搜索树的数据如果接近有序,就会变为单支树,查找效率降低。AVL树应用一种方法——当左右子树高度差超过1,降低树的高度。使二叉搜索树能够一直保持平衡状态。
2023-11-13 20:19:50
98
原创 C++——unordered_set、unordered_map容器和底层模拟实现(哈希)
set和map的关联式容器,底层为红黑树,最多查找树的高度次,效率非常高。unordered系列用了不同的底层结构,又让效率变得更高。插入和删除比map和set差一点点,但是find效率特别高。原因是哈希结构把数据和位置信息关联(映射),找数据的时候是直接找到。
2023-11-02 21:29:03
394
原创 C++——vector
vector的数据结构是顺序表,即数组。vector是一个类模板。模板参数列表第一个参数T是vector的实例化类型。如: vector<int> v1;//T为int vector<string> v2;//T为string。第二个参数是空间配置器,即内存池。平时使用vector不需要传这个参数。内存池:因为容器(如vector,string等)需要频繁的使用内存,通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会。
2023-06-27 18:17:30
559
原创 C++——STL简介、string类
STL是c++标准库的组成部分,是一个可复用的组件库,也是包含数据结构和算法的软件框架。1.仿函数2.算法3.迭代器4.空间配置器5.容器6.配接器。
2023-06-21 18:50:31
667
原创 C++——string练习
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)字符串最后一个单词的长度_牛客题霸_牛客网string str;//cin>>str;//
2023-06-18 19:30:17
227
原创 C++——模板
class 类模板名// 类内成员定义// 类模板函数在类外定义时,需要加模板参数列表if(_pData)// Vector是类名,Vector才是类型拿栈距举例:我们用 typedef 来解决可维护性,想要int的栈就 typedef int STDataType;想要double的栈就typedef double STDataType;但当我们想要两个栈,一个int,一个double就很麻烦了。
2023-06-17 18:04:30
297
原创 C++——内存管理
内存泄漏并不是指内存消失了,而是指针丢失,失去对改该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:程序正常结束,内存泄漏了最终还是会还给操作系统。但长期运行的程序如果出现内存泄漏,影响很大,会导致响应越来越慢,最终卡死。1.C++中关于堆和栈的说法,哪个是错误的( )A.堆的大小仅受操作系统的限制,栈的大小一般较小B.在堆上频繁的调用new/delete容易产生内存碎片,栈没有这个问题C.堆和栈都可以静态分配D.堆和栈都可以动态分配A.堆大小受限于操作系统,而栈空间一般由系统直接分配。
2023-06-16 19:44:57
1442
原创 【C++】class类(定义方法、成员访问、类的大小、this指针)
struct的升级版——class//类体:成员函数(方法)和成员变量(属性)class是定义类的关键字。className是类名,{}里是类的主体。注意}最后的分号不能省略。类中的内容称为类的成员:变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。c++的类可以函数在上,变量在下。或者变量在上,函数在下。c++把类看作整体,搜索的时候在整个类里找。顺序不重要,不影响效率。c语言习惯先定义或者声明再使用。c语言每个变量和函数之间没有必定的关联,是独立的。class算不算一个域?算。
2022-10-16 22:43:57
1233
原创 C++基础
命名冲突:语言中在同一域的变量同名就会报错。且没办法解决,只能更改名字,只有一个变量能用这个名字。C++为了解决该问题,引入命名空间,新增关键字namespace定义命名空间域。namespace后可以定义变量,函数,类型命名空间可以嵌套多文件可以用同名的命名空间,实质上是同一个命名空间,编译器最终会把他们合在一起域全局变量是在全局域定义的。局部域,域会影响访问和生命周期。同一域不能定义同名变量,不同域可以。namespace是找了个办法使变量可以同名。_::_ 域作用限定符。
2022-10-09 22:52:56
872
原创 数据结构——排序(C语言)
时间复杂度:O(N^2)最差情况:逆序最优情况:顺序有序或者接近顺序有序。123456,每个数据都是直接插入到后面,一个都没挪。最优时间复杂度:O(N)
2022-10-04 19:20:43
976
原创 C语言——文件操作
一、文件指针使用文件会在内存中开辟一个文件信息区,用来存放文件的相关信息(文件名,文件状态及文件当前位置等)。这些信息存放在一个结构体变量中。这个结构体类型由系统声明,取名为FILE。每打开一个文件系统会自动创建一个FILE结构体变量,并存入信息。通过FILE*指针我们通过文件信息区中的内容访问文件。二、文件的打开和关闭读取和写入之前应该先打开文件,使用结束要关闭文件。// 打开文件FILE * fopen ( const char * filename , const c
2022-06-03 23:52:02
1975
原创 练习——【带环单链表】141.环形链表 、142.环形链表||
1.环形链表题目:给你一个链表的头节点 head ,判断链表中是否有环。如果链表中存在环 ,则返回 true 。 否则,返回 false 。链接:力扣方法:快慢指针fast先走到空说明没环。fast和slow相遇的时候说明有环(带环不会走到空)。带环的三种情况1.指向头2.指向中间3.指向自己bool hasCycle(struct ListNode *head) { struct ListNode * slow=head,* fast=h.
2022-05-28 20:21:28
137
原创 练习——【单链表】203.移除链表元素 | 21.合并两个有序链表 | CM11链表分割 | 160.相交链表
1.移除链表元素题目:给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。链接:力扣方法一:struct ListNode* removeElements(struct ListNode* head, int val){ struct ListNode* cur=head; struct ListNode*prev=NULL; if(head==NULL) { ...
2022-05-24 17:28:34
146
原创 练习——【快慢指针】876.链表的中间结点 | 链表中倒数第k个结点 | 206.反转链表 | OR36 链表的回文结构
1.链表的中间结点题目:给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。链接:力扣struct ListNode* middleNode(struct ListNode* head){ struct ListNode* slow=head; struct ListNode* fast=head; while( fast && fast->next )//奇数:当fast-
2022-05-23 23:37:02
269
原创 练习——【双指针】88.合并两个有序数组 26.删除数组中的重复项
目录1.合并有序数组2.删除重复项1.合并有序数组链接:力扣题目:给你两个按 非递减顺序 排列的整数数组nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度...
2022-05-04 20:14:46
235
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人