- 博客(22)
- 收藏
- 关注
原创 测试报告——“问卷考试系统”项目
本文主要讲述了问卷考试系统的测试报告,从一开始的项目背景介绍,到测试用例的编写,以及中期手动测试的实施,在到后面自动化测试的开展,以及到后面BUG的发现,到最后的项目总结。
2025-10-01 23:19:35
953
原创 Linux基础(1) Linux基本指令(二)
本文介绍了Linux系统中的常用命令操作,包括文件操作指令(mv、more/less、head/tail)、重定向技术(>、>>、<)、时间相关指令(date、时间戳)、查找指令(find、which、grep)以及压缩解压指令(tar、zip/unzip)。重点讲解了管道"|"的用法和Linux"一切皆文件"的设计哲学,揭示了指令本质是可执行文件的特点。文章还涉及alias别名设置、bc计算器和uname系统信息查询等辅助命令,为Linux初
2025-08-21 23:32:39
831
原创 Linux基础(1) Linux基本指令(一)
本文记录了从零开始学习Linux基础命令的过程。主要内容包括:1)常用基础命令如ls(列出文件)、cd(切换目录)、pwd(显示当前路径)等;2)文件操作指令如touch(创建文件)、mkdir(创建目录)、rm(删除)等;3)文件读写命令nano(编辑)和cat(查看);4)路径概念(绝对/相对路径)和通配符使用;5)帮助命令man的使用。文中配有具体语法、功能说明和操作示例,适合Linux初学者按步骤实践学习。
2025-08-18 15:47:14
1726
原创 C++:多态
本文系统介绍了C++多态的核心概念与实现机制。首先阐述了多态作为面向对象三大特性之一的本质:通过统一接口实现不同对象的差异化响应(如不同身份购票的差异)。重点解析了虚函数机制,包括虚函数重写的条件(函数签名相同)、协变和析构函数重写的特殊情况,以及C++11引入的override和final关键字。文章深入探讨了多态底层原理,通过虚函数表(存放于常量区)和对象中的虚表指针实现动态绑定,对比分析了多态调用(运行时通过虚表查找)与普通调用(编译时静态绑定)的区别。最后说明了抽象类的接口继承特性,并简要提及多继承
2025-08-10 22:54:55
1470
原创 C++:继承[下篇]
摘要:本文记录了C++继承机制的学习笔记,重点分析了继承中的关键问题。主要内容包括:1)友元关系不可继承;2)静态成员在继承体系中共享;3)多继承引发的菱形继承问题及其解决方案(虚拟继承);4)继承与组合的对比分析,强调优先使用组合而非继承。文章指出多继承是C++的复杂特性,容易导致数据冗余和二义性问题,建议避免设计菱形继承结构,并详细比较了继承(is-a关系)与组合(has-a关系)在复用性、耦合度方面的差异,推荐在多数场景下优先采用组合方式。
2025-08-09 17:01:21
1898
原创 C++:继承[上篇]
本文介绍了C++中面向对象编程的继承机制。主要内容包括:1.继承的基本概念与定义方式,展示派生类如何扩展基类功能;2.基类和派生类对象的赋值兼容转换规则,说明派生类对象可赋值给基类对象(切片);3.继承中的作用域特点,解释同名成员隐藏机制及访问方法;4.派生类默认成员函数的生成规则,重点分析构造函数、拷贝构造、赋值运算符和析构函数的处理逻辑,强调"先父后子"的初始化顺序和"先子后父"的析构顺序。文章通过代码示例详细说明了继承体系中的关键特性和注意事项。
2025-08-03 20:08:41
833
原创 C++:模板进阶
本文系统介绍了C++模板编程的核心概念和技术要点。首先详细讲解了非类型模板参数的定义、使用限制及其在STL array类中的应用;其次分析了vector类模板的泛型实现及typename关键字的作用;然后重点阐述了模板特化技术,包括函数模板特化(不推荐)和类模板特化(全特化与偏特化);最后深入探讨了模板分离编译问题及解决方案(推荐将声明和实现放在头文件中)。全文通过大量代码示例,帮助读者理解模板编程的原理与实践应用,是学习C++模板特性的实用指南。
2025-08-02 19:13:07
798
原创 C++/STL:stack/queue/priority_queue的使用及底层剖析&&双端队列&&容器适配器&&仿函数
本文介绍了C++中的容器适配器stack、queue和priority_queue,重点分析了它们的底层实现和使用方法。作为容器适配器,它们通过封装deque或vector等容器实现特定数据结构功能。文章详细讲解了双端队列deque的原理与优缺点,解释了其被选作stack和queue默认底层容器的原因。同时深入剖析了优先级队列priority_queue的堆实现机制,包括建堆的两种方式(逐个插入和一次性建堆)及其时间复杂度差异。最后通过仿函数示例展示了如何自定义优先级规则,并提供了优先级队列的模拟实现代码。
2025-08-01 20:49:20
773
原创 C++/STL:list容器的深度剖析及模拟实现
本文介绍了从零开始实现C++中list容器的过程。主要分为三个模块:节点类(ListNode)、迭代器类(ListIterator)和list类。节点类使用双向链表结构存储数据;迭代器类通过模板参数实现普通迭代器和const迭代器的复用,重载了++、--、*和->等运算符;list类实现了构造函数、插入删除等基本操作,并利用迭代器实现遍历功能。特别讨论了迭代器设计中的关键问题,如const迭代器的实现、->运算符的重载使用等。通过模板和运算符重载技术,成功模拟了STL list容器的核心功能。
2025-07-30 16:47:09
676
原创 C++/STL:list容器的基本使用
本文介绍了C++标准库中的list双向链表容器及其基本用法。list作为序列式容器,具有在任意位置高效插入删除元素的优势,其底层采用双向链表结构。文章详细讲解了list的构造方法、迭代器使用(包括正向和反向迭代器)、常用操作(头尾插删、插入删除、resize/swap/clear等)。通过多个代码示例展示了list的基本操作,包括使用迭代器遍历、范围for循环、插入删除元素等。同时指出list的缺点是不支持随机访问,访问元素需要线性时间开销,且需要额外空间存储节点信息。
2025-07-21 21:16:33
593
原创 C++/STL:vector的增删查改的模拟实现
本文记录了一个从零开始学习C++的实践过程,主要展示了vector容器的模拟实现。代码实现了vector类模板,包含迭代器定义、构造函数、空间管理(reserve/push_back)、元素访问(operator[])、插入删除(insert/erase)等核心功能,并提供了7个测试用例验证其正确性。测试案例覆盖了基本操作、迭代器失效、拷贝构造、初始化列表等场景,体现了对vector容器的深入理解和实践。整个实现过程展示了C++模板编程、内存管理和STL容器的关键知识点。
2025-07-19 17:07:53
164
原创 C++/STL:vector容器的基本使用
本文记录了C++中vector容器的学习笔记。vector是一种动态数组,支持高效随机访问和尾部插入删除操作。文章详细介绍了vector的定义方式、迭代器使用、空间增长策略(不同编译器扩容倍数不同)、增删查改操作(push_back/pop_back/insert/erase等),以及排序算法sort的使用。通过示例代码演示了vector的基本操作,并提供了两个实际应用场景:使用异或运算找出只出现一次的数字,以及生成杨辉三角的二维动态数组实现。文中还特别强调了vector与普通数组的区别,以及不同编译器环境
2025-07-17 18:49:42
835
原创 C++/STL:string类底层的模拟实现
本文记录了从零开始学习C++的过程,重点展示了string类的完整实现。文章包含三个主要部分:string.h头文件定义了string类及其成员函数和运算符重载;string.cpp文件实现了这些功能,包括构造函数、赋值运算符、增删改查等操作;Test.cpp文件通过多个测试用例验证了string类的各种功能,如迭代器访问、字符串拼接、查找子串等。整个实现过程体现了对C++类封装、内存管理和运算符重载等核心概念的理解与应用。
2025-07-15 17:06:57
164
原创 C++/STL:string类的基本使用
本文记录了从零开始学习C++ string类的过程。首先对比了C语言字符串操作的局限性,强调string类符合OOP思想且更安全。文章详细介绍了string类的基本概念、常用构造方法,以及size()、resize()、reserve()等容量操作的区别。重点讲解了三种遍历方式(迭代器、下标访问、范围for),并演示了字符串修改操作(插入/拼接、查找、截取、删除)。最后介绍了非成员函数、类型转换以及insert/assign/replace等高级操作,同时提醒注意中间操作的低效性。全文通过代码示例展示了st
2025-07-09 22:21:59
665
原创 C++:模板初阶和STL简介
本文介绍了C++泛型编程中的模板技术,主要包括函数模板和类模板。函数模板通过typename/class定义通用函数,编译器根据参数类型自动生成具体版本,解决了代码复用问题。类模板同理,使用模板参数创建通用类,实例化时需指定具体类型。文章详细讲解了模板的隐式/显式实例化、匹配原则以及类模板的定义方式,展示了模板在提高代码复用性和可维护性方面的优势。
2025-07-04 22:00:11
660
原创 C++:C/C++内存管理
本文记录了从零开始学习C++的动态内存管理过程。首先回顾了C语言的内存分布(栈、堆、数据段等)和malloc/calloc/realloc/free的使用区别。然后重点介绍了C++的new/delete操作符:对于内置类型,new/delete与malloc/free类似但会抛异常;对于自定义类型,new会调用构造函数,delete会调用析构函数。文章深入解析了new/delete的底层实现(operator new/delete函数)和交叉使用malloc/free可能引发的问题,特别指出有析构函数的自定
2025-06-30 21:26:19
619
原创 C++:类和对象(下篇)
本文总结了C++构造函数、静态成员、友元和内部类等关键知识点。主要内容包括:1)构造函数初始化列表的使用场景(引用/const成员、无默认构造的自定义类型)及注意事项;2)静态成员变量/函数的特性和应用场景;3)友元函数和友元类的作用及限制;4)内部类的定义方式和访问权限。文章通过代码示例详细说明了这些特性的实际应用,如利用静态成员统计对象数量、使用友元重载流运算符等,并强调了初始化顺序、隐式转换等易错点。这些内容对深入理解C++面向对象编程至关重要。
2025-06-28 21:20:14
574
原创 C++ 类和对象(中篇)
本文系统介绍了C++中类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、赋值运算符重载、const成员函数以及取地址操作符重载。重点讲解了构造函数(初始化对象)、析构函数(清理资源)、拷贝构造函数(对象拷贝)和赋值运算符重载(对象赋值)的特性和使用场景,通过Date类和Stack类的实例说明何时需要自行实现这些函数。文章还详细分析了const成员函数的作用和取地址操作符重载的应用,为C++初学者提供了全面的类成员函数学习指南。
2025-06-21 23:16:36
673
原创 C++ 类和对象(上篇)
本文介绍了从零开始学习C++的基础知识,重点对比了面向过程(C语言)与面向对象(C++)的编程差异。主要内容包括: 类的基本概念:引入类的定义方式,说明结构体与类的区别(默认访问权限不同) 封装特性:通过访问限定符实现数据保护,解释了面向对象三大特性之一的封装 类对象模型:分析类对象的存储方式(仅存储成员变量),讨论内存对齐规则 this指针机制:说明this指针的作用、特性及其在成员函数中的隐式传递 常见面试问题:如结构体内存对齐、大小端测试、this指针存储位置等 文章通过代码示例展示了C++类的基本使
2025-06-18 22:48:35
790
原创 C++入门第二课(函数重载,引用,内联函数,auto关键字,基于范围的for循环,指针空值nullptr)
本文介绍了C++中的几个重要特性:函数重载、引用、内联函数、auto关键字、基于范围的for循环以及nullptr关键字。详细讲解了函数重载的定义和实现原理,通过参数列表差异实现同名函数的不同功能;引用作为别名机制的使用场景和特性;内联函数以空间换时间的优化思想;auto关键字的类型推导能力;范围for循环的简化遍历语法;以及nullptr作为指针空值的优势。这些特性共同提升了C++代码的表达能力和运行效率,是C++区别于C语言的重要特征。文章通过代码示例详细说明了各特性的使用方法和注意事项。
2025-06-09 21:01:53
637
原创 C++入门
本文介绍了C++入门基础知识,主要包括四部分内容:一、C++关键字,63个关键字比C语言更丰富;二、命名空间,通过namespace解决标识符冲突问题,并详细说明命名空间的定义、嵌套、合并及三种使用方式;三、输入输出流,讲解cout/cin的基本用法和std命名空间的使用规范;四、缺省参数,包括全缺省和半缺省参数的语法规则和使用注意事项。文章通过代码示例展示了相关概念的实际应用,为C++初学者提供了系统的基础知识入门指南。
2025-06-05 23:27:58
775
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅