自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 C++封装:面向对象编程的核心概念

封装是C++面向对象编程的基础,它通过访问控制实现了信息隐藏,提高了代码的安全性和可维护性。良好的封装设计应该:尽可能将数据成员设为私有提供清晰、简洁的公有接口保持常量正确性遵循最小权限原则通过合理运用封装,我们可以构建出更加健壮、易于维护的C++程序。希望这篇博客能帮助你更好地理解和使用C++的封装特性!

2025-03-31 14:15:35 359 1

原创 C++ 多态:面向对象编程的核心概念(二)

C++多态是面向对象编程的强大工具,它提供了代码的灵活性和可扩展性。理解多态的实现原理和适用场景,能够帮助我们设计出更优雅、更易维护的代码。无论是编译时多态还是运行时多态,都有其独特的优势和适用场景,在实际开发中应根据需求合理选择。希望本文能帮助你更好地理解和应用C++多态特性。如果你有任何问题或想法,欢迎在评论区留言讨论!

2025-03-30 20:19:10 532 2

原创 C++ 多态:面向对象编程的核心概念(一)

多态是一个继承关系下的类对象,去调用同一函数产生了不同效果的行为。所以必须有继承的基类和派生类。必须是基类的指针或者引用调用虚函数。因为只有基类的指针或引用才能既指向基类对象又指向派生类对象。被调用的函数必须是虚函数,并且完成了虚函数重写或覆盖。只有完成了重写或者覆盖,基类和派生类之间才能有不同的函数,多态的不同形态效果才能达到。

2025-03-30 20:18:46 937 4

原创 C++ 继承:面向对象编程的核心概念(一)

在上面的代码中,我们看到没有继承的类Student 和 Teacher,Student 和 Teacher都有一部分相同的成员和函数(_name、_address、_tel、_age、identity),这部分函数分别实现在两个类里面是冗余的。一般都需要显示写继承方式。派生类和基类中有同名成员时,派生类将屏蔽基类对派生类同名成员的访问,这种情况叫隐藏。方法1:基类的构造函数私有,派生类的构成必须调用基类的构造函数,但是基类的构成函数私有化以后,派生类看不见就不能调用了,那么派生类就无法实例化出对象。

2025-03-26 23:01:53 926 7

原创 C++ 继承:面向对象编程的核心概念(二)

继承是C++面向对象编程中的重要概念,它允许我们通过复用和扩展已有的类来构建更复杂的程序。通过单继承、多继承和虚继承,C++ 提供了灵活的继承机制,使得代码的组织和维护更加方便。希望本文能帮助你更好地理解C++中的继承机制。如果你有任何问题或建议,欢迎在评论区留言!

2025-03-26 23:01:24 954 2

原创 Vector 的模拟实现:从基础到高级

初始化一个空的vector。通过这个详细的实现,我们深入了解了的核心机制,包括动态扩容、拷贝/移动语义、迭代器支持等。希望这篇博客对你有所帮助!如果有任何问题或建议,欢迎留言讨论。

2025-03-18 22:01:40 873 6

原创 深入理解string:从模拟实现看本质

本文将通过模拟实现一个简单的 String 类,深入探讨字符串的底层实现原理,包括内存管理、深浅拷贝、深赋值、常用操作以及性能优化等方面,帮助读者更好地理解和使用字符串。关键词: String, 模拟实现, 内存管理, 深浅拷贝, 深赋值, 字符串操作, 性能优化我们首先定义一个String:字符串:字符串的长度:字符串的容量构造函数、析构函数、拷贝构造函数、赋值运算符。常用操作:字符串连接、子串查找、字符串比较、访问元素、获取长度等。常用操作符:==、!=、>>、<<等。

2025-03-10 09:51:25 596 14

原创 C++ string的基本概念

在了解什么是string之前,我们首先需要知道字符串是什么。在C语言中,字符串是指以’\0’结尾的一些集合。同时为了操作方便,C语言也提供了一些库函数用来操作这些字符串。但是,这些函数与字符串是分离开的,不符合OOP的思想------(面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。。同时需要用户自己管理底层空间,稍不留神就会出现越界访问。

2024-12-15 17:28:35 498 1

原创 C++ string常用接口的说明

本篇文章所有的内容均出自。

2024-12-15 17:28:12 493 1

原创 C++模板初阶

class 类模板名// 类内成员定义。

2024-12-08 14:38:35 379 8

原创 C/C++内存管理

由于C++是在C语言的基础上开发出来的语言,所以C++的内存管理方式与C语言极度类似。作者在此篇文章中只介绍C++的内存管理方式。在了解内存管理的方式之前,我们不妨先做一个问题来了解什么是内存。free(ptr1);free(ptr3);选择题:选项: A.栈 B.堆 C.数据段(静态区) D.代码段(常量区)globalVar在哪里?____staticGlobalVar在哪里?____staticVar在哪里?____localVar在哪里?____

2024-12-08 14:36:40 927 3

原创 详解C++类与对象(四)

1.类型转换。

2024-12-04 23:31:39 1058 3

原创 详解八大排序(六)------(三路划分,自省排序,归并排序外排序)

外排序(External Sorting)是指能处理极大量数据的排序算法。通常来说,外排序处理的数据不能一次装入内存,只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采用的是⼀种“排序-归并”的策略。在排序阶段,先读入能放在内存中的数据量,将其排序输出到⼀个临时文件,依此进行,将待排序数据组织为多个有序的临时文件。然后在归并阶段将这些临时文件组合为⼀个大的有序文件,也即排序结果。

2024-12-04 23:31:11 1314 13

原创 详解八大排序(五)------(计数排序,时间复杂度)

根据时间复杂度来看,只推荐使用希尔排序,堆排序,快速排序,归并排序,计数排序。但是由于计数排序需要注意空间复杂度上面的问题,所以一般情况下,只推荐使用希尔,堆,快速,归并这四种排序方法。已知数组中最小的数是1,最大的数是67.那么就需要开辟一个大小为max - min + 1的新数组。当原数组的数据比较集中时,才推荐使用计数排序。计数排序的核心思路是另外创建一个数组,记录原数组中出现的成员个数,再依次打印新数组中的成员个数。接着我们在遍历新数组,当新数组成员不等于0时,我们就打印相应的位置并且加上min。

2024-11-23 17:43:46 523 10

原创 详解C++类与对象(三)

1. 拷贝构造函数和赋值运算符重载。

2024-11-23 17:43:25 706 19

原创 详解八大排序(四)------(归并排序)

归并排序的核心思路是把数组里面的数两两分成一组,组内比较完大小之后,再把组外的融合进组内进行比较。以下两个版本的核心思路也是这样。只是分组的方法不同。

2024-11-17 14:29:44 503 4

原创 详解八大排序(三)------(快速排序)

快速排序的本质是找到数组中的中间值,然后从中间值对半二分数组,再从二分之后的两个数组里面找到新的中间值,再二分。直到数组全部二分完成,无法二分之后,再返回数组。那么,问题来了。我们应该如何找到这个中间值呢?下面我会介绍三个找到中间值的方法。

2024-11-17 14:29:12 996 4

原创 详解八大排序(二)------(堆排序)

在介绍堆排序之前,我们首先需要知道,堆是具有下列性质的完全二叉树:每个节点的值都大于或等于其左右孩子节点的值,称为:大顶堆(大堆);向下调整算法的使用是有前提的,必须确保我们排序的数组符合小堆的特征。那么我们可以通过从最后一个父结点来进行判断,例如上面的4,将4与子结点中的小的那个数比较,也就是2。我们再让父结点减一,从倒数第二个父结点来重复上述操作,也就是3与1进行比较,由于1比3要小,所以将3和1进行交换。得到小堆之后,我们只需要让根结点与最后一个结点进行交换并比较,我们就能得到一个降序的数组。

2024-11-16 11:56:21 546 3

原创 详解八大排序(一)------(插入排序,选择排序,冒泡排序,希尔排序)

在日常生活中,我们常常要将各种各样的数据进行排序,例如我要将班上的学生按照数学成绩从大到小的排序,像这种一般情况,编译器自带的sort函数就能满足我们的要求。但是,假如我要将班上姓刘的学生按照数学成绩从大到小的排序呢?这种时候,编译器自带的sort函数无法满足需求,我们就需要自己定义一个排序函数。下面我就要介绍目前的八大排序的原理,代码,以及时间,空间复杂度。

2024-11-16 11:54:36 1721 1

原创 详解二叉树

如果有一个关键码的集合K = { , , ,…, },把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足: <= 且 <= ( >= 且 >= ) i = 0,1,2…把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。树的代码有很多种,如:双亲表示法,孩子表示法,孩子双亲表示法,孩子兄弟表示法等等。满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。总结:将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。

2024-10-31 20:18:44 736 1

原创 链式二叉树的实现(代码)

由于链式二叉树部分功能的实现需要借用Queue,所以下面也有Queue的代码。代码之间放了注释,有任何不懂的可以在评论区中提出。

2024-10-31 20:16:59 334

原创 详解C++类与对象(二)

在C++中,类中存在默认成员函数,那什么是默认成员函数?默认成员函数就是用户没有显示实现,编辑器会自动生成的成员函数。一个类,在不写的情况下,会默认生成下面6个默认成员函数。其次,C++11以后还会增加两个默认成员函数移动构造和移动赋值。这两个本篇文章不讲解。默认成员函数是公认的C++较难学习的部分。因此,我们在学习默认成员函数我们不写时,默认生成的函数是否够用?若是不够用,我们应该如何实现一个够用的成员函数?

2024-10-14 18:34:48 920 2

原创 日期类的实现---代码部分

【代码】日期类的实现---代码部分。

2024-10-14 18:34:19 239 2

原创 详解C++的类和对象(上)

class—定义类的关键字,Stack—类的名字,{}—类的主体。注意:类的定义结束后面分号不能省略。同时,为了区分成员变量和成员函数。一般情况下成员变量会加一个特殊标志符。例如 _ 和 m 开头。这个不是C++强制规定的语法,仅供参考。成员函数默认为inline。public:perror("malloc申请空间失败");return;top = 0;size_t top;

2024-09-25 23:55:02 617 3

原创 C++的基础知识

C++的基础知识快速Get文章 !

2024-09-16 22:39:45 832 4

原创 函数栈帧的创建和销毁

函数栈帧就是函数调用过程中在程序的调用栈所开辟的空间。这些空间用来存放:①函数参数和函数返回值②临时变量(包括函数的非静态的局部变量以及编译器自动生产的其他临时变量)③保存上下文信息(包括在函数调用前后需要保持不变的寄存器)

2024-09-06 14:33:08 193 3

原创 C语言中的文件操作

C语言中的文件操作

2024-06-27 23:08:17 608 2

原创 动态内存管理

C语言动态内存管理

2024-05-29 11:46:40 340

原创 指针与相关知识

指针 本质是一种变量,与普通变量不同的是,普通变量存放的是数据,指针变量存放的是该数据存放的地址(这里放一张普通变量的图,一张指针变量的图)

2024-05-06 09:13:25 856 5

原创 我的编程学习计划

目前我是一所双非二本的学生,平时喜欢看动漫,听音乐。最喜欢做的是学习外语,目前正在学习英语和日语グッ!(๑•̀ㅂ•́)و✧。目前计划是按照C语言→JavaSE→初阶数据结构→高阶数据结构→JavaEE初阶→JavaEE进阶→数据库—MySQL来学习。目前最想进入的是拳头👊🏻,R⭐️,还有米哈游。哈哈~( ̄▽ ̄~)~,看得出我很喜欢玩游戏,争取早日成功😎。学习编程主要是为了能够赚大钱(๑• . •๑)。能做到不麻烦父母,去做自己想做的事。每周学习三天(〜 ̄▽ ̄)〜。

2024-01-01 20:33:46 432

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除