- 博客(53)
- 收藏
- 关注
原创 C++特性 多态
多态是一个继承关系下的类对象,去调用同一函数,产生不同的行为。Student继承了person。Person对象买全价票,Student对象买半价票。public://虚函数 类成员函数前加virtualcout << "全价买票" << endl;public:cout << "半价买票" << endl;// 这里可以看到虽然都是Person指针Ptr在调用BuyTicket// 但是跟ptr没关系,而是由ptr指向的对象决定的int main()fun(p1);
2025-11-12 11:52:48
731
原创 进程通信--进程间说悄悄话
由于操作系统通过进程隔离(每个进程拥有独立的内存空间)保障安全性和稳定性,进程无法直接访问其他进程的内存,因此需要特定的通信方式来实现协作。进程间通信(Inter-Process Communication,IPC)是操作系统提供的一种机制,允许不同进程之间。进程通信的本质:是让不同的进程,先看到同一份资源“内存”。(然后才有通信的条件)小于PIPE_BUF 是具有原子性的。Linux下,为4096字节。2具体的通信方式(原理+代码)2System V 本机通信。1基于文件的,管道通信。
2026-02-02 20:02:19
609
原创 进程的理解
计算机(笔记本,服务器)大部分都遵循冯诺依曼体系。:键盘,鼠标,话筒,摄像头,网卡,磁盘(其实就是外存):显示器,磁盘,网卡,打印机.....:运算器➕控制器存储器就是内存。
2026-01-08 11:56:35
752
原创 智能指针喵喵喵
保障了资源的正常释放,避免了资源泄露问题。智能指针除了要满足RAII思路,还要方便访问资源,所以还会像迭代器重载一些操作符operator*/operator->/operator[],方便访问资源。
2025-12-19 21:34:17
668
原创 异常那些不为人知的秘密
异常处理机制 允许程序中独立开发的部分在运行时就出现的问题 进行通信 并做出相应的处理,异常使得我们将问题的检测与解决问题的过程分开,程序的一部分负责检测问题的出现,然后解决问题的任务传递给程序的另一部分,检测环节问题处理模块的不需要所有细节。C语言主要通过错误码的形式处理错误,错误码本质就是对错误信息进行分类编号,拿到错误码以后还要去查询错误信息,比较麻烦。异常时抛出一个对象,这个对象可以包含更全面的各种信息。程序出现问题时,我们通过抛出(throw)一个对象来引发异常,该对象当前的类型以及调用链决定
2025-12-17 18:44:39
908
原创 C++11那些不为人知的特性
lambda表达式本质是一个匿名函数对象,和普通函数不同的是他可以定义在函数内部。在语法层面是来讲是没有类型的,用 auto或者模板参数定义的对象来接收。格式[ ]捕捉列表,出现在lambda函数的开始位置,编译器根据捕捉列表判断后面的表达式是否为lambda函数,捕捉列表可以捕捉变量供lambda函数使用,捕捉列表可以传值捕捉和传引用捕捉。捕捉列表为空也不可以忽略。( )参数列表,传参 ,如果不需要参数的传递,则可以连()一起省略-> 返回值类型,用追踪返回类型形式。
2025-12-17 08:43:15
1011
原创 AVL[特殊字符]的理解
AVL树是1AVL是一颗。2它的,且左右子树的高度差绝对值不超过1。AVL树是一颗高度的平衡二叉搜索树,通过高度差去控制平衡。AVL树整体结点数量和分布和完全二叉搜索树类似,。
2025-11-22 19:50:27
633
原创 二叉搜索树
又叫二叉排序树,有两种情况2是一颗满足以下性质的树如果左子树不为空,则左子树所有节点小于根节点如果右子树不为空,则右子树所有节点小于根节点左右子树也分别为二叉搜索树。multimap/multiset/map/set底层都为二叉搜索树,其中map/set不可以插入相同的值,multimap/multiset可以插入相同的值。
2025-11-20 18:42:09
682
原创 Stack_Queue
stack是一种先进后出的数据结构,只要能实现的线性结构都可以作为stack的底层容器,如vector或者list。queue是一种先进后出的数据结构,只要能实现的线性结构度可以作为queue的底层容器,如list。选择deque作为stack或者queue的底层容器,主要是:1stack和queue只需要。2在stack元素增长时,;queue中的元素增长时,;
2025-10-30 09:31:47
334
原创 STL_List简单使用
2push_back 与emplace的比较。1简单应用 push_back。vector与list效率对比。insert与erase。
2025-10-28 11:19:17
219
原创 vector习题
https://leetcode.cn/problems/single-number/https://leetcode.cn/problems/pascals-triangle/description/https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/https://leetcode.cn/problems/single-number-ii/description/https://leetcode.cn/
2025-10-22 19:16:44
326
原创 模板简介初阶
模板不建议定义和声明到两个文件中.h和.cpp会出现链接错误。int main()//类模板都是显示实例化//调用operater new 开空间然后调用 构造函数开数组//delete p1;//调用析构函数 清理数组资源 然后调用operator delete删除空间return 0;
2025-10-21 10:21:01
392
原创 内存管理C++
栈又叫堆栈局部变量(非静态)、函数参数、返回值等等,栈是向下增长的。堆用于程序运行时动态分配内存堆可以向上增长。数据段全局数据和静态数据。代码段可执行代码和只读常量。C语言的动态内存管理方式malloc calloc reallocclass Apublic::_a1(a1),_a2(a2)if (this!return 0;//{
2025-10-20 21:21:10
901
原创 类和对象3
实现构造函数中初始化成员变量时,主要使用函数体内赋值,构造函数初始化还有一种方式是,就是初始化列表。初始化列表的使用方式 以一个冒号开头,接着以一个逗号分割的数据成员列表,每个“成员变量”后面跟初始值或者表达式。每个成员变量都只能在初始化列表出现一次,语法理解上初始化列表是每个成员变量定义初始化的地方。引用成员变量,const成员变量,没有默认构造的类 类型变量,必须放在初始化列表进行初始化,否则会编译报错。C++11支持在成员变量声明的位置给缺省值,这个缺省值主要是给没有显示在初始化列表成员使用的。
2025-10-18 14:34:30
606
原创 类与对象2
如果一个构造函数的第一个参数是自身类类型的引用,且任何其他参数都有默认值,这个构造函数也叫做拷贝构造函数,也就是说拷贝构造是一个特殊的构造函数。拷贝构造函数 用一个已经存在的对象去初始化另一个对象class Datapublic://无参构造函数//Data()//{//}//全缺省构造函数_day = day;//半缺省构造函数//{//}//结构体C语言也会完成拷贝~Data()private:int _year;int _month;
2025-10-13 10:15:09
878
原创 构造函数和初始化列表的关系
因为使用构造函数一定不可避免的会调用自定义类型成员变量的默认构造,然而使用初始化列表可以避免使用默认构造函数,直接调用该成员变量的拷贝构造class Time //声明一个Time类,类中有三个成员变量,和一个有参构造函数public:private:int _hour;
2025-10-02 21:11:35
208
原创 编译和链接
摘要: 程序从源代码到执行需经历翻译和运行两个环境。翻译环境包括编译(预处理、词法语法分析、语义分析、汇编)和链接(地址分配、符号决议)过程,将.c文件转换为可执行程序。运行环境则负责程序载入内存、执行main函数、管理堆栈/静态内存以及程序终止。其中链接阶段需解决多文件间的符号引用问题,通过重定位修正函数和变量的地址。整个过程涉及编译器、汇编器和链接器的协同工作,最终生成可在特定操作系统或独立环境中运行的可执行文件。(149字)
2025-10-02 08:55:03
820
原创 C++入门基础知识
1.namespace后面跟命名空间名,{命名空间的成员变量},{}里面是变量,函数,类型。2.namespace的本质是定义出一个域,这个域于全局域互相独立,所以就解决了变量冲突3.C++中有全局域,局部域,命名空间域,类域。域影响的是编译时,语法查找一个变量/函数/类型出处的逻辑,有了域的隔离,命名冲突问题也就解决了。局部域和全局域不仅影响语法查找逻辑,还影响变量的生命周期。命名空间域和类域不影响变量的生命周期。4.namespace只可以在全局定义,也可以嵌套定义。
2025-09-25 17:35:18
694
原创 初步认识顺序表
顺序表是线性表的一种,其底层是数组,进行一系列封装,实现增删查改,包装成顺序表。线性表包括顺序表,链表,栈,队列等等。是n个具有相同元素的有限序列。线性表在物理上存储时,以数组或链表形式存储。物理结构上不一定连续,逻辑结构一定连续。
2025-08-31 15:54:31
201
原创 初认识链表
【链表操作摘要】链表是一种非连续存储结构,通过指针连接节点。本文介绍了链表的基本操作实现:1)节点定义与打印;2)尾插/头插操作;3)尾删/头删处理;4)查找节点;5)指定位置插入/删除节点(包括前后位置处理);6)链表销毁。关键点在于动态内存管理和指针操作,特别注意处理空链表和边界情况。代码展示了完整的链表操作函数集,包括开辟节点、遍历链表和指针重定向等核心操作细节。
2025-08-28 12:34:41
139
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1