- 博客(514)
- 收藏
- 关注
原创 7.Linux进程概念|冯诺依曼|操作系统|进程|进程状态|进程优先级|环境变量|程序地址空间|
本文摘要介绍了计算机系统的基本结构和关键概念。首先阐述了冯诺依曼体系结构的核心特点:计算机由输入单元、中央处理器、存储器和输出单元组成,所有设备只能直接与内存交互。然后重点讲解了操作系统的作用和定位,指出其是管理计算机软硬件资源的软件,通过系统调用和库函数为上层开发提供接口。最后详细介绍了进程的概念,包括进程控制块(PCB)的内容分类、进程的组织方式,以及通过系统调用获取和创建进程的方法,特别是fork函数创建子进程的机制。这些内容构成了计算机系统运行的基础框架和核心原理。
2026-02-13 14:14:25
591
原创 6.Linux环境基础开发工具使用|yum|vim|gcc/g++|gdb|make/makefile|进度条|git
Linux软件管理与vim编辑器摘要 软件包管理: yum是Linux下常用包管理器,类似应用商店,可自动处理软件依赖关系 基本操作:yum list查看软件包、yum install安装、yum remove卸载 注意事项:需要网络连接和sudo权限,安装时需按顺序执行 vim编辑器: 三种主要模式:命令模式(移动光标/删除)、插入模式(文本输入)、末行模式(保存/搜索) 常用操作:i进入插入模式、ESC返回命令模式、:wq保存退出 高效编辑:支持光标快速移动、文本复制/删除/替换、撤销操作等 可自定义配
2026-02-08 19:29:23
583
原创 5.Linux权限管理|文件类型和访问权限|文件限制值|文件访问权限设置|目录的权限
本文介绍了Linux系统中的用户权限管理机制,主要包括用户分类(超级用户和普通用户)、文件权限设置和目录权限控制。重点讲解了su和sudo命令的用户切换方法,详细说明了文件访问者分类(所有者、组用户和其他用户)、文件类型识别和权限表示方法(字符和八进制)。文章还提供了chmod、chown、chgrp等权限修改命令的具体用法,解释了umask掩码对默认权限的影响,并分析了目录权限的特殊性(如删除权限与文件权限的关系)。通过实例演示了权限设置的实际操作,帮助理解Linux系统的权限管理体系。
2026-02-04 09:52:58
645
原创 4.Linux基本指令(下)|date|cal|find|which|whereis|grep|sort|uniq|zip|unzip|tar|uname|热键|关机|rz|sz|shell命令
本文总结了Linux系统中常用的时间、查找和压缩相关命令。时间操作包括date命令的格式显示(如%Y-%m-%d)、时间设置(date -s)和时间戳转换(date +%s);cal命令可查看日历(支持-3、-j等参数)。查找功能主要通过find指令(按文件名搜索)、which/whereis定位命令位置以及grep文本过滤工具(支持-i、-n等选项)实现。压缩操作介绍了zip/unzip(-r递归处理)和tar命令(-c打包、-x解包、-z配合gzip等),并给出了具体使用示例。这些命令组合使用可高效完成
2026-02-02 11:26:58
662
原创 39.C++进阶:C++的IO流|标准IO流|文件IO流|stringstream
本文摘要: C/C++输入输出机制对比分析。C语言通过scanf/printf实现基本I/O操作,依赖缓冲区管理,但存在数据类型匹配和空格处理等限制。C++采用面向对象的流式I/O,构建了以ios为基类的完整类体系,提供cin/cout等全局流对象,支持运算符重载实现自定义类型I/O。文件操作方面,C++通过ifstream/ofstream类实现文本和二进制文件读写,相比C语言更具类型安全性和扩展性。特别分析了istream到bool的类型转换机制,以及在线OJ中的循环输入处理技巧。通过Date类示例展示
2026-02-01 08:39:09
606
原创 38.C++进阶:C++的类型转换|static_cast|reinterpret_cast|const_cast|dynamic_cast
摘要:C++引入四种类型转换机制以解决C语言转换的缺陷。static_cast用于非多态类型转换,reinterpret_cast用于位模式重新解释,const_cast用于去除const属性,dynamic_cast实现安全的父子类指针转换。相比C风格的隐式和显式转换,C++的类型转换更具安全性和可读性,但仍需谨慎使用。RTTI机制通过typeid、dynamic_cast和decltype支持运行时类型识别。(149字)
2026-02-01 04:22:28
604
原创 37.C++进阶:特殊类设计|不能拷贝|不能继承|只在堆上创建对象|只在栈上创建对象|只能创建一个对象
本文介绍了C++中几种特殊类设计方法:1)禁止拷贝的类:C++98通过私有化拷贝构造和赋值运算符,C++11使用delete关键字;2)只能在堆上创建的类:私有构造函数+静态创建方法;3)只能在栈上创建的类:私有构造函数+禁用new操作符;4)不可继承的类:C++98私有构造函数,C++11使用final关键字;5)单例模式:包括饿汉模式(启动即初始化)和懒汉模式(延迟加载),后者使用双检查锁保证线程安全。这些方法体现了C++的灵活性和设计模式的实用性。
2026-02-01 02:03:11
485
原创 36.C++进阶:智能指针|内存泄漏|RAII|auto_ptr|unique_ptr|share_ptr
摘要: 本文探讨了C++中智能指针的必要性及其实现原理。通过示例程序分析了内存泄漏问题,指出当new操作或函数调用抛出异常时可能导致的内存泄漏风险。介绍了RAII(资源获取即初始化)思想,展示如何通过智能指针自动管理资源释放。重点讲解了auto_ptr和unique_ptr两种智能指针的实现原理:auto_ptr采用管理权转移机制但存在设计缺陷,unique_ptr则通过禁止拷贝来确保资源安全。文章还分类讨论了堆内存泄漏和系统资源泄漏,并提供了检测和避免内存泄漏的方法建议。
2026-01-31 09:33:04
608
原创 35.C++进阶:异常|抛出和捕获|重新抛出|自定义异常体系|异常的优缺点
本文对比了C语言和C++的错误处理机制。C语言主要通过终止程序或返回错误码处理错误,但存在用户体验差和查找不便的问题。C++引入异常处理机制,通过throw抛出异常、try-catch捕获异常,实现更灵活的错误管理。文章详细介绍了异常的使用方法,包括抛出捕获原则、栈展开机制、异常重新抛出等,并强调了异常安全问题。最后展示了自定义异常体系的实际应用,通过继承基类Exception创建特定领域异常类(如SqlException),形成规范的异常管理体系,便于项目统一处理错误。
2026-01-30 01:05:19
603
原创 34.C++进阶:C++11|可变参数模板|lambda表达式|包装器
本文介绍了C++11中的两个重要特性:可变参数模板和lambda表达式。可变参数模板允许函数和类模板接受可变数量的参数,通过递归或逗号表达式展开参数包实现参数处理。lambda表达式则简化了匿名函数的定义,语法为捕捉列表mutable->返回类型{函数体},可用于替代复杂的仿函数实现。文章通过排序示例展示了lambda表达式的简洁性,相比C++98需要定义多个比较类,lambda能直接内联比较逻辑。这些特性显著提升了C++的灵活性和代码简洁性。
2026-01-29 06:44:17
705
原创 33.C++进阶:C++11|列表初始化|声明|右值引用和移动语义|新的类功能
C++11引入了统一的列表初始化语法,使用{}可以初始化各种内置类型和自定义类型。新增了std::initializer_list类型作为构造函数参数,使容器初始化更便捷。在声明方面,auto实现了自动类型推导,decltype可获取表达式类型,nullptr替代了NULL表示空指针。右值引用(&&)允许对右值取别名,支持移动语义,解决了传统左值引用无法引用临时对象的问题。这些特性简化了代码编写,提高了效率,是C++11的重要改进。
2026-01-28 04:24:31
783
原创 32.C++进阶:哈希的应用|位图|布隆过滤器|海量数据面试题
位图与布隆过滤器是两种高效处理海量数据的数据结构。位图通过二进制位表示数据存在与否,适合处理无重复整型数据,实现快速查找、排序去重和集合运算。布隆过滤器结合哈希与位图,支持字符串等数据类型,以概率方式判断元素是否存在,节省空间但允许误判。文中提供了位图的C++实现代码,包含设置、重置、检测等功能,并展示了位图在求交集和布隆过滤器在推荐系统去重中的应用场景。这两种数据结构在操作系统、推荐系统等领域具有重要价值,能有效解决大数据环境下的存储与查询问题。
2026-01-24 08:14:31
974
原创 31.C++进阶:⽤哈希表封装myunordered_map和 myunordered_set
摘要: 本文分析了SGI-STL30版本中非标准的hash_map和hash_set实现,指出它们基于哈希表结构而非C++11标准的unordered容器。通过源码展示,揭示了hash_set使用Value作为模板参数、hash_map使用Key/T的命名混乱问题。在模拟实现部分,提出了复用哈希表框架的方案,通过MapKeyOfT和SetKeyOfT仿函数解决键值提取问题,并给出了哈希表扩容的素数序列策略。实现重点包括迭代器支持、const迭代器处理、键不可修改性保障以及operator[]重载等关键环节。
2026-01-22 23:08:30
720
原创 30.C++进阶:哈希表实现|直接定址法|负载因子|除留余数法|链地址法
哈希是一种通过哈希函数将关键字映射到存储位置的数据组织方式,主要包括直接定址法、除留余数法等哈希函数。哈希冲突不可避免,可通过开放定址法(线性探测、二次探测、双重散列)或链地址法解决。负载因子衡量哈希表空间利用率,需平衡冲突概率与空间效率。哈希函数设计需考虑均匀分布,如全域散列法引入随机性防止恶意攻击。不同方法各有优劣,需根据实际场景选择合适的哈希策略。
2026-01-22 01:14:34
876
原创 29.C++进阶:unordered_map和unordered_set的使⽤
本文介绍了C++中unordered_set和unordered_map的使用特点及其与set/map的主要差异。unordered系列容器基于哈希表实现,要求key支持转换为整型并能比较相等性,而set/map基于红黑树实现,要求key支持小于比较。性能测试表明unordered系列在插入、查找和删除操作上通常更快(平均O(1)复杂度)。此外,unordered系列的迭代器是单向的且遍历无序,而set/map的迭代器是双向的且遍历有序。文章还提供了代码示例对比两者的性能差异,并简要提及了unordered
2026-01-22 01:11:27
280
原创 28.C++进阶:map和set封装|insert|迭代器|[]
本文分析了SGI-STL30中map和set的实现框架,重点研究了它们如何复用红黑树(rb_tree)作为底层数据结构。通过泛型编程技术,rb_tree通过模板参数Value控制节点存储的数据类型,实现了对set(存储key)和map(存储pair<const key, T>)的通用支持。文章详细解析了源码中的关键设计,包括节点结构、模板参数传递机制以及比较操作的处理方式。同时提供了模拟实现map和set的方案,展示了如何通过KeyOfT仿函数解决不同类型数据的比较问题,并给出了红黑树插入操作的
2026-01-21 00:07:55
959
原创 27.C++进阶:红黑树实现|插入|查找|验证|与AVL比较
红⿊树是⼀棵⼆叉搜索树,他的每个结点增加⼀个存储位来表⽰结点的颜⾊,可以是红⾊或者⿊⾊。通过对任何⼀条从根到叶⼦的路径上各个结点的颜⾊进⾏约束,红⿊树确保没有⼀条路径会⽐其他路径⻓出2倍,因⽽是接近平衡的。
2026-01-20 09:50:23
771
原创 26.C++进阶:AVL树实现|结构|插入|旋转|左单旋|右单旋|左右双旋|右左双旋|查找|平衡检测
AVL树是一种高度平衡的二叉搜索树,由Adelson-Velsky和Landis在1962年提出。它通过平衡因子(右子树高度减左子树高度)控制树高差不超过1,确保操作效率为O(logN)。插入节点时需要更新平衡因子,当不平衡时通过四种旋转(左单旋、右单旋、左右双旋、右左双旋)重新平衡。旋转既保持搜索树性质,又降低子树高度。AVL树的结构包含左右子节点、父节点指针和平衡因子,插入过程需处理平衡因子更新和必要的旋转操作。
2026-01-19 10:51:21
577
原创 25.C++进阶:map|pair类型|构造|增删查|数据修改|迭代器|multimap|OJ
本文介绍了C++ STL中map容器的使用。map是基于红黑树实现的有序键值对容器,提供O(logN)的增删查改效率。文章详细讲解了map的构造方式(默认、迭代器区间、拷贝构造等)、迭代器遍历、插入操作(insert)、查找(find/count)和删除(erase)等核心接口。重点分析了operator[]的多功能特性,它既能修改value又能插入新数据。map通过pair存储键值对,支持修改value但不允许修改key,以维护底层搜索树结构。示例代码展示了map的基本使用方法。
2026-01-18 11:56:49
588
原创 24.C++进阶:set|构造|迭代器|增删查|multiset|OJ
STL容器分为序列式容器(如vector、list)和关联式容器(如set、map)。序列式容器存储线性数据,关联式容器基于非线性结构(如红黑树)实现高效查找。set容器通过红黑树实现,自动去重并按升序排列,提供O(logN)的增删查操作。支持迭代器遍历、范围插入和删除操作,同时提供lower_bound和upper_bound等区间查找功能。set的迭代器不允许修改元素值以保证结构完整性。示例代码展示了set的基本使用,包括插入、遍历、查找和删除操作,以及利用仿函数实现自定义排序规则。
2026-01-18 11:52:56
615
原创 23.C++进阶:二叉树OJ|二叉树创建字符串|最近公共祖先|搜索树与双向链表|前中序构建二叉树|二叉树的非递归遍历
本文摘要: 二叉树转字符串:通过递归遍历二叉树,将节点值转换为字符串,并用括号表示子树结构。当子树为空时省略括号,实现了简洁的字符串表示。 二叉树最近公共祖先:提供了两种解法: 递归法:通过判断目标节点在左右子树中的位置,确定公共祖先节点 路径记录法:记录根到两个节点的路径,通过比较路径找到最后一个公共节点 二叉搜索树转双向链表:利用中序遍历特性,递归调整节点指针方向,将BST转换为有序双向链表。 前序中序构建二叉树:通过前序确定根节点,在中序中定位左右子树范围,递归构建完整二叉树结构。 二叉树前序遍历:使
2026-01-16 18:04:54
277
原创 22.C++进阶:⼆叉搜索树|手撕二叉搜索树
本文介绍了二叉搜索树的基本概念、性能分析和核心操作。二叉搜索树是一种有序二叉树,左子树值≤根节点值≤右子树值。其性能在最优情况下为O(logN),最差情况下退化为O(N)。文章详细讲解了插入、查找和删除操作的具体实现方法,其中删除操作需区分四种不同情况处理。对于删除有两个子节点的情况,采用替换法删除策略。文中还提供了C++实现代码,包括节点结构定义和二叉搜索树类的关键操作函数实现。通过对比二分查找的局限性,强调了平衡二叉搜索树在实际应用中的优势。
2026-01-14 23:05:58
550
原创 21.C++进阶:多态|虚函数|重写覆盖|纯虚函数|抽象类|虚函数表
本文介绍了C++多态的概念、实现方式及相关特性。多态分为编译时多态(函数重载、模板)和运行时多态(虚函数重写)。实现运行时多态需要满足:基类指针/引用调用虚函数,且派生类完成虚函数重写。文章详细讲解了虚函数重写规则,包括协变、析构函数重写等特殊情况,并介绍了override和final关键字的使用。最后对比了重载、重写和隐藏的区别,并提及纯虚函数和抽象类。通过实例代码展示了多态的具体应用场景和注意事项。
2026-01-14 07:34:57
668
原创 20.C++进阶:继承|作用域|默认成员函数|友元|静态成员|多继承|虚继承|组合
本文介绍了面向对象编程中的继承机制。继承允许派生类复用基类的成员,同时扩展新的属性和方法,形成类层次结构。文章详细讲解了继承的定义格式、访问权限变化(public/protected/private继承方式对基类成员可见性的影响),以及基类和派生类之间的转换规则(派生类对象可赋值给基类指针/引用,反之则不行)。此外还说明了继承中的作用域问题,特别是派生类成员与基类成员同名时的隐藏规则。最后通过代码示例展示了继承的实际应用,包括类模板的继承实现。继承机制体现了面向对象程序设计由简单到复杂的认知过程,是代码复用
2026-01-12 16:33:02
664
原创 19.C++入门:模板进阶|非类型模板参数|模板的特化|模板分离编译
本文介绍了C++模板编程中的两个重要概念:非类型模板参数和模板特化。非类型模板参数允许使用常量作为模板参数,但仅限于整型、枚举和指针类型,且必须在编译期确定。模板特化分为函数模板特化和类模板特化,用于处理特殊类型的特殊情况。函数模板特化需要先定义基础模板,而类模板特化包括全特化和偏特化两种形式。偏特化可对部分参数特化或对参数类型进一步限制(如指针或引用类型)。文章通过日期类比较等示例,展示了模板特化的实际应用场景和使用方法。
2026-01-11 12:36:25
732
原创 18.C++入门:stack和queue|priority_queue|容器适配器|deque
本文介绍了C++中三种容器适配器:stack、queue和priority_queue的基本概念和使用方法。stack是后进先出(LIFO)容器,提供了push、pop、top等操作;queue是先进先出(FIFO)容器,支持front、back、push、pop等操作;priority_queue是优先级队列,元素按特定顺序排列。文章通过代码示例展示了如何用栈实现最小栈、判断栈的压入弹出序列、计算逆波兰表达式,以及用队列实现栈等经典算法问题。同时提供了这些容器适配器的模拟实现代码,帮助读者深入理解其底层原
2026-01-11 01:16:46
837
原创 17.C++入门:list|反向迭代器|通过正向迭代器适配|list和vector对比
本文展示了C++中list反向迭代器的实现方法。通过正向迭代器适配出反向迭代器,利用ReverseIterator模板类包装正向迭代器,重载运算符实现反向迭代功能。关键点包括:1) 反向迭代器内部包含一个正向迭代器成员;2) 重载operator*()和operator->()实现解引用;3) 重载++/--运算符实现反向遍历;4) 提供rbegin()和rend()接口返回反向迭代器。这种实现方式可以复用正向迭代器的功能,简化反向迭代器的开发。代码示例展示了list容器中正向迭代器(__list_i
2026-01-11 01:08:13
272
原创 16.C++入门:list|手撕list
本文实现了一个C++模板类list,模拟标准库中的双向链表容器。主要包含以下内容: 定义ListNode结构体作为链表节点,包含前驱、后继指针和数据成员; 实现__list_iterator迭代器类,重载了++、--、*、->等运算符; 实现list类核心功能: 构造函数、析构函数、拷贝构造和赋值运算符 基本操作:push_back/push_front、pop_back/pop_front 迭代器操作:begin/end、insert/erase 辅助函数:clear、swap等 通过测试函数验证l
2026-01-08 15:19:39
375
原创 15.C++入门:list|构造|使用|迭代器失效
本文介绍了C++ STL中list容器的基本用法和特性。主要内容包括:list的构造函数(包含n个元素、空构造、拷贝构造等)、迭代器使用(正向/反向迭代器)、容量操作(empty/size)、元素访问(front/back)以及修改操作(push/pop/insert/erase等)。通过代码示例展示了list的遍历、排序、去重等操作,并分析了迭代器失效问题(仅删除操作会导致指向被删节点的迭代器失效)。此外,还通过性能测试比较了list和vector的排序效率差异。
2026-01-08 15:17:18
380
原创 14.C++入门:vector|手撕vector
本文实现了一个简易的vector容器模板类,包含基本功能:构造函数、拷贝构造、赋值运算符重载、迭代器访问、容量操作(reserve/resize)、元素操作(push_back/pop_back/insert/erase)等。通过动态数组管理元素,实现自动扩容机制(默认扩容2倍)。测试代码验证了迭代器访问、下标访问、插入删除等操作的正确性,展示了vector的基本使用方式。该实现模拟了STL vector的核心功能,为理解容器底层原理提供了参考。
2026-01-04 21:08:35
232
原创 13.C++入门:vector|定义|迭代器的使用|空间增长|增删查改|迭代器失效问题|OJ题
本文介绍了C++标准库中vector容器的基本用法。主要内容包括:1)vector的构造函数定义及初始化方式,如无参构造、指定元素数量构造、拷贝构造和迭代器范围构造;2)迭代器使用方式,包括begin/end获取正向迭代器,rbegin/rend获取反向迭代器;3)空间管理方法,如size/capacity查询、resize/reserve调整空间,并对比了VS和g++编译器下不同的扩容策略;4)常用操作接口,包括push_back/pop_back尾插尾删、insert/erase插入删除元素、swap交
2026-01-04 21:05:22
960
原创 12.C++入门:String|手撕String|浅拷贝|深拷贝|写时拷贝
本文展示了多个字符串处理算法的实现,包括: 反转字母(917题):使用双指针法交换字符串中的字母字符,跳过非字母字符。 首个唯一字符(387题):通过统计字符频率数组,找出第一个出现次数为1的字符。 最后一个单词长度:使用getline获取输入,通过rfind定位最后一个空格计算长度。 验证回文串(125题):处理大小写和非字母数字字符后,用双指针法判断回文。 字符串相加(415题):模拟竖式加法,从末位开始逐位相加处理进位。 最后还展示了一个自定义String类的框架实现,包含迭代器、容量操作、元素访问和
2026-01-02 20:11:27
401
原创 11.C++入门:String|auto|范围for|常用接口
STL是C++标准模板库,包含六大组件:仿函数、算法、迭代器、空间配置器、容器和配接器。string类是STL中的重要容器,相比C字符串更安全易用。C++11引入了auto关键字和范围for循环,简化了代码编写。string类提供多种构造方法和容量操作,如size()、reserve()和resize(),其中reserve()可预留空间避免频繁扩容,扩容倍数约为1.5倍。这些特性使string类成为处理字符串的高效工具。
2025-12-30 22:06:42
852
原创 10.C++入门:模板初阶|函数模板|类模板|模板的实例化
本文介绍了C++中的泛型编程概念,重点讲解了函数模板和类模板的使用方法。函数模板通过template<typename T>语法定义,允许编写与类型无关的通用代码,编译器会根据实参类型自动生成特定版本。文章分析了模板实例化的两种方式(隐式和显式)以及模板参数的匹配原则。类模板部分展示了如何定义模板类,并强调类模板实例化需要在类名后加<>指定具体类型。最后指出类模板名本身不是类型,只有实例化后的类名<类型>才是完整类型。模板技术可以有效提高代码复用率,减少重复编码工作。
2025-12-29 18:15:40
342
原创 9.C++入门:内存管理|new|delete|operator new|operator delete|定位new|与malloc/free区别
本文介绍了C/C++中的内存管理机制。首先分析了内存分布,包括栈(存储局部变量)、堆(动态内存)、数据段(全局/静态变量)和代码段(常量)。比较了C语言(malloc/calloc/realloc/free)和C++(new/delete)的内存管理方式,指出new/delete会自动调用构造/析构函数。深入讲解了operator new/delete的底层实现,它们通过malloc/free工作但能处理异常。对于自定义类型,new会先分配内存再调用构造函数,delete则相反。最后介绍了定位new表达式,
2025-12-29 15:35:40
1013
原创 8.C++入门:类和对象|static成员|友元|内部类|匿名对象|对象拷贝时的编译器优化
本文介绍了C++中的静态成员、友元和匿名对象特性。静态成员包括静态成员变量和静态成员函数,它们属于类而非对象,需要在类外初始化。友元机制突破了类的封装限制,包括友元函数和友元类,但会增加代码耦合度。内部类是定义在另一个类内部的独立类,默认是外部类的友元。匿名对象是临时创建的对象,生命周期仅限于当前行。文中通过多个代码示例展示了这些特性的实际应用场景,如统计对象数量、计算数列和等。这些特性为C++编程提供了更灵活的设计选择,但使用时需要权衡封装性和便利性。
2025-12-28 22:22:01
559
原创 7.C++入门:类和对象|日期类的实现|取地址运算符重载|const成员函数|初始化列表|类型转换
本文实现了一个C++日期类Date,包含完整的日期运算功能。主要特性包括: 支持日期合法性检查,自动处理闰年情况 重载了所有比较运算符(<,>,==等) 实现了日期加减运算(+=,-=,+,-) 支持前后置自增/自减运算符(++,--) 重载了流运算符(<<,>>)实现日期输入输出 提供日期差值计算功能(d1-d2) 实现中特别注意了日期运算的边界情况处理,如跨年、跨月的日期加减,并采用静态数组存储每月天数以提高效率。测试用例展示了处理大数值日期加减的能力,验证了算法的正
2025-12-28 22:20:17
669
原创 6.C++入门:类和对象|构造函数|析构函数|拷贝构造函数|运算符重载|赋值运算符重载
本文介绍了C++中类的默认成员函数,重点分析了构造函数和析构函数。默认成员函数包括6个基本函数(C++11新增2个),其中构造函数和析构函数最为重要。构造函数用于对象初始化,具有自动调用、可重载等特点;编译器生成的默认构造函数对内置类型不保证初始化,但对自定义类型会调用其默认构造。析构函数用于资源清理,对象销毁时自动调用,对自定义类型总会调用其析构函数。文中通过Stack和Date类示例展示了构造/析构函数的应用场景,并对比了C++与C实现方式的差异,凸显了C++自动管理资源的优势。
2025-12-27 16:21:14
1002
原创 5.C++入门:类和对象|类的定义|实例化|this指针|C++和C语言实现Stack对比
本文介绍了C++中类的定义和使用方法。主要内容包括: 类定义格式:使用class关键字定义类,包含成员变量和成员函数,类定义结尾需要分号 访问限定符:public、protected和private实现封装,控制成员的访问权限 类域:类构成独立作用域,成员函数定义需使用作用域操作符指明所属类 实例化:用类类型创建对象的过程,对象包含独立的数据空间 对象大小:对象只存储成员变量,遵循内存对齐规则,成员函数不占用对象空间 文中通过栈和日期类的代码示例,展示了类的定义、成员访问控制和实例化的具体实现。
2025-12-25 19:14:59
586
原创 NO18数据结构选择题考点|查找|排序
本文摘要:文章系统介绍了常见查找排序算法和数据结构。首先分析了顺序查找、折半查找的特点及适用条件,比较了链表、顺序表和静态链表的性能差异。重点讲解了平衡二叉树和红黑树的性质、构建规则及效率对比,指出平衡二叉树查找更快但维护成本更高。详细阐述了B树和B+树的定义、结构特点及差异,包括结点关键字范围、索引方式等。最后介绍了散列表的基本原理、冲突处理方法(线性探测和平方探测)及影响查找效率的三个关键因素。通过数学公式和表格对比,全面展示了各类查找结构的特性和应用场景。
2025-12-15 18:31:16
673
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅