C++
文章平均质量分 78
许我一世白头
问就是十八清纯男大
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉搜索树详解(k,kv类型)
若它的左⼦树不为空,则左⼦树上所有结点的值都⼩于等于根结点的值。若它的右⼦树不为空,则右⼦树上所有结点的值都⼤于等于根结点的值。它的左右⼦树也分别为⼆叉搜索树。⼆叉搜索树中可以⽀持插⼊相等的值,也可以不⽀持插⼊相等的值,具体看使⽤场景定义,后续我 们学习map/set/multimap/multiset系列容器底层就是⼆叉搜索树,其中map/set不⽀持插⼊相等 值,multimap/multiset⽀持插⼊相等值。原创 2024-11-29 15:54:55 · 824 阅读 · 0 评论 -
C++中的继承(2)
⽅法1:基类的构造函数私有,派⽣类的构成必须调⽤基类的构造函数,但是基类的构成函数私有化以后,派⽣类看不⻅就不能调⽤了,那么派⽣类就⽆法实例化出对象。⽅法2:C++11新增了⼀个final关键字,final修改基类,派⽣类就不能继承了。private:// C++98的⽅法/*Base(){}*/protected:int b = 2;Derive d;return 0;原创 2024-10-25 18:13:43 · 674 阅读 · 0 评论 -
C++中的继承(1)
下面我们看到Person是基类,也称作父类。Student是派生类,也称作子类。(因为翻译的原因,所以 既叫基类/派生类,也叫父类/子类)原创 2024-10-18 15:31:55 · 930 阅读 · 0 评论 -
C/C++的动态内存管理
6. 申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数与析构函数,而new在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成空间中资源的清理。对于申请的是内置类型的话,new与malloc,delete与free并无太大的区别,不同的地方的是:new和delete申请的是单个元素空间,而new[]和delete[]申请的是连续的空间,而且。4. malloc的返回值为void*, 在使用时必须强转,new不需要,因为new后跟的是空间的类型。原创 2024-09-24 23:10:59 · 749 阅读 · 0 评论 -
auto关键字以及范围for的用法
使用auto修饰的变量,是具有自动存储器的局部变量auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。这个含义就告诉了我们,在编译的时候编译器就必须先把auto声明的变量先行推导,得出这个变量是什么类型的。return 10;int a = 1;auto b = 2;使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。原创 2024-09-24 15:10:00 · 1000 阅读 · 0 评论 -
C++类和对象小结(static函数及总结)
实际上这些东西把物品的功能给抽象化出来,站在计算机理解的角度来进行工作(个人理解),所以我们要带着类和对象不断理解去学习C++,再就是多加的联习和感悟也是我们在C++道路上的捷径。原创 2024-09-19 23:25:31 · 469 阅读 · 0 评论 -
C++之再谈构造函数
3.尽量使用舒适化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,一定会优先使用初始列表初始化。2.类中包含引用成员变量,const成员变量,自定义类型成员(且该类没有默认构造函数)必须使用初始化列表。4.成员变量在类中的声明次序就是在其初始化列表的初始化顺序,与其在初始化列表中的先后顺序不同。虽然说上述构造函数调用后,对象中已经有一个初值,但是这并不能称为对对象中成员变量的初始化。在创建对象时,编译器要调用构造函数,给对象中各个变量进行赋值。1.每个成员变量在初始化列表只能初始化一次。原创 2024-09-19 17:49:32 · 357 阅读 · 0 评论 -
C++的初始(2)
其实不看编译啥的,流氓点就是我写完函数会生成一串东西,这串东西的第一句会被找到从而来使用这串东西,c语言中这串东西的第一句不被修饰,C++中则会去修饰一下从而形成的函数重载。在我们学习c语言我们便知道不能有重复的同名函数,但是再c++中我们可以在不同的命名空间去命名相同的名字的函数,因为这些函数在不同的作用域。我们在Linux操作系统下去查看他们的汇编代码(我也是萌新,听的懵懵懂懂的,借用杭哥的图,毕竟我也不会Linux)还有就是返回值的问题,两个函数完全相同,但是返回值不同,这也是不构成重载的。原创 2024-04-06 16:20:22 · 281 阅读 · 1 评论 -
初始C++(内联函数)
inline函数不支持声明和定义分离开,因为编译器一旦将一个函数作为内联函数处理,就会在调用位置展开,即该函数是没有地址的,也不能在其他源文件中调用,故一般都是直接在源文件中定义内联函数的,即下图。我们不是用递归的情况下,频繁使用一个函数,在c语言中我们会使用宏来定义这个函数,但是宏定义是有缺陷的,祖师爷看这个宏很不爽,就衍生出了内联函数。因为我是小白我也不是很清楚栈,基本的函数的调用会建立栈帧,频繁的调用函数会消耗大量的栈帧,从而是程序的效率降低,而内联函数就是去解决这个问题。那么什么是内联函数呢?原创 2024-04-12 11:10:55 · 242 阅读 · 0 评论 -
C++(构造函数详解)
我们可以看到我们写完这个日期类的时候应该初始化,然后之后的每次调用这个日期类都要使用一便初始化,图上只写了两个,如果十多个呢?这时候我们的程序就显得十分麻烦。我们是否可以有一种函数可以使我们不用经常使用初始化函数。构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证 每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次。原创 2024-05-12 15:05:07 · 475 阅读 · 0 评论 -
C++(析构函数)
但是: main函数中不能直接调用Time类的析构函数,实际要释放的是Stack类对象,所以编译器会调用Stac类的析构函数,而Stack没有显式提供,则编译器会给Stack类生成一个默认的析构函数,目的是在其内部调用Time类的析构函数,即当Stack对象销毁时,要保证其内部每个自定义对象都可以正确销毁main函数中并没有直接调用Time类析构函数,而是显式调用编译器为Stack类生成的默认析构函数。注意:创建哪个类的对象则调用该类的析构函数,销毁那个类的对象则调用该类的析构函数。原创 2024-05-13 15:22:37 · 378 阅读 · 0 评论
分享