C++
文章平均质量分 88
1
仍有未知等待探索
顶峰
展开
-
C/C++ 进阶(4)二叉搜索树
首先我们先找到要删除节点的右子树中的最小值,然后和要删除的节点进行值替换,最后我们要删除掉替换后的节点。判断要删除的节点是其父节点的左孩子还是右孩子。如果要删除 14 这个节点,我们需要让 14 的父节点的对应指针指向 14 的左子树。如果要删除 7 这个叶子节点,我们需要让 7 的父节点的右孩子指向nullptr。总结:先替换,然后删除替换后的节点(判断替换后的节点的类型,然后用对应的删除方法)如果要删除 10 这个节点,我们需要让 10 的父节点指向 10 的右子树。总结:让要删除节点的父节点的。原创 2024-05-30 11:26:09 · 965 阅读 · 0 评论 -
C++ 进阶(3)虚函数表解析
在这个虚函数表中,主要有一个类的虚函数的地址。当我们用基类指针操作派生类的时候,其指明了实际应该调用的函数。原创 2024-05-22 16:53:46 · 439 阅读 · 0 评论 -
C/C++ 进阶(2)多态
1、必须通过基类的指针或者引用调用虚函数。2、被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。public:// 用virtual修饰的函数cout原创 2024-05-21 22:14:47 · 680 阅读 · 2 评论 -
C/C++ 进阶(1)继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。对于不同的类,可能会有相同的属性,如果在每一个类中都存一份相同的属性,可能会属性冗余。这样我们就可以把相同的属性拿出来,单独设置成一个类,然后成为父类(基类)这个表格挺重要的!!!原创 2024-05-18 22:28:36 · 714 阅读 · 0 评论 -
C/C++ 入门(12)模板进阶
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生。2. 增强了代码的灵活性。原创 2024-05-14 00:30:32 · 807 阅读 · 0 评论 -
C/C++ 入门(11)stack、queue(STL)
适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。stack、queue、priority_queue底层都是容器适配器。deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。deque通过多个数组实现的。原创 2024-05-13 14:59:42 · 822 阅读 · 0 评论 -
C/C++ 入门(10)list类(STL)
欢迎来指教!原创 2024-05-08 20:07:15 · 942 阅读 · 0 评论 -
C/C++ 入门(9)编译链接
缺省参数只写在函数声明的时候。原创 2024-04-29 17:48:35 · 285 阅读 · 0 评论 -
C/C++ 入门(8)vector类(STL)
问题是关键呦原创 2024-04-25 15:40:53 · 384 阅读 · 2 评论 -
C/C++ 入门(7)string类(STL)
1、string是表示字符串的字符串类2、该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。原创 2024-04-22 09:49:58 · 1167 阅读 · 0 评论 -
C/C++ C/C++ 入门(6)模板初阶
在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码,对于字符类型也是如此。是一个蓝图,它本身并不是函数,是编译器用使用方式产生特定具体类型函数的模具。1、一个非模板函数可以和一个同名的模板函数同时存在,而且该函数模板还可以被实例化为这个非模板函数。类模板名字不是真正的类,而实例化的结果才是真正的类。原创 2024-04-15 17:24:16 · 1090 阅读 · 0 评论 -
C/C++ 入门(5)内存管理
new的原理:1、调用operator new函数申请空间。2、在申请的空间上执行构造函数,完成对象的构造。delete的原理:1、在空间上执行析构函数,完成对象中资源的清理工作。2、调用operator delete函数释放空间。new T[N]的原理:1、 调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对象空间的申请。2、 在申请的空间上执行N次构造函数。delete[]的原理。原创 2024-04-12 18:54:38 · 631 阅读 · 0 评论 -
C/C++ 入门(4)类和对象(下)
在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。2、多个参数的类,如果构造的时候,仅需要一个参数进行构造的话,如果没有explicit修饰的话,具有类型转换。友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加。如果一个类定义在另一个类的内部,这个内部类就叫做内部类。友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。原创 2024-04-11 11:47:57 · 1091 阅读 · 0 评论 -
类和对象总结
成员函数存储在代码段中,而不是对象中。内联函数在编译阶段就会在调用的地方进行展开(没有函数的地址),如果把声明定义分离,则无法链接或者是找不到链接(有符号表,但是对应的符号没有地址,无法解析)。原创 2024-04-08 21:04:47 · 245 阅读 · 0 评论 -
C/C++ C++入门(2)类和对象(上)
/ class 和 struct 是定义类的关键字、A1,A2是类的名字、{}里面的是类的主体// 注意:最后的分号不要忘记!!!class A1{// 属性(成员变量) —— 默认的属性的权限是privite// 方法(成员函数)struct A2{// 属性 —— 默认的属性的权限是public// 方法如果成员函数在类中定义,编译器可能会将其当成内联函数处理。public:public:// 学生的属性是 名字和年龄int _age;原创 2024-03-23 16:47:59 · 848 阅读 · 0 评论 -
C/C++ C++ 入门(3)类和对象(中)
欢迎各位来指教!原创 2024-03-05 17:19:58 · 1174 阅读 · 1 评论 -
C/C++ C++入门(1)
/ 正常定义int a = 1;int b = 2;// 嵌套定义int a = 1;int b = 2;int a = 1;int b = 2;// 一个工程里面允许定义多个相同的命名空间——编译器最后会合成同一个命名空间中。int main()// 打印cpp2里面的函数// 打印cpp2里面的cpp3里面的函数return 0;原创 2024-02-01 09:08:14 · 2384 阅读 · 3 评论