深入CPP语法口牙
文章平均质量分 96
阅读本专栏需要一定C基础哦,本专栏也就是用来平常谢谢笔记啦
oldking呐呐
今天也要努力口牙
展开
-
【CPP】类与多态
例如典中典的火车票的例子,设计一个自助售票函数,设计一个父类为乘客,设计一个子类继承自父类为学生,再设计一个子类继承自父类为军人,每个种乘客类型可以买不同价格的票,当这类对象作为参数(传引用/指针)传进一个为父类"乘客"的自助售票函数中,根据函数判断生成符合当前乘客身份的票。覆写的概念很重要,从字面意思咱就知道,子类的情况可能会和父类不太一样,此时我们就可以覆写掉父类的方法,改成我们想让子类所呈现的模式,当然,这里的覆写在底层的角度上其实说不上是覆写,这个后面的小节会提到。原创 2024-10-08 21:35:52 · 1081 阅读 · 0 评论 -
【CPP】类与继承
父类,如果当前类的子类是多继承就会影响到子类,将当前类的子类中重复的当前类的父类部分合二为一,所以说虚继承关系到3个具有父子关系的类。发现了吗,平板电脑因为既继承了笔记本电脑,又继承了手机,所以其中包含了两个计算机的特性,这就产生了数据冗余和二义性的问题。在以上的例子中我们称反恐精英为玩家的子类,玩家为反恐精英的父类,反恐精英继承自玩家这个父类。简单来说单继承就是只有一个"继承链"的继承方式,类似于链表,每个类的父节点都是唯一的。标签,所有的底层全都是开放的,导致子类可以很轻松地使用到父类底层的所有东西。原创 2024-09-20 21:39:59 · 1131 阅读 · 0 评论 -
【CPP】模板(后篇)
但如果声明和定义分离了,调用的源头会在编译的时候找到函数声明但却没有找到含函数定义,这时候会假设存在这样的函数,但此时定义还是个模板,并没有被实例化,所以在找函数的时候,就会找不到,所以如果要进行声明和定义分离的话,就一定要函数定义实例化,这样才能在链接的时候有函数可找。不过从根本上说,函数特化其实并不好用,问题就出自上面这条"特化要求特化能传的,原模版也要能传",这就导致了一个重要的问题,假如说原模版使用了传引用传参而不是传值传参,就会出现很多问题。先赞后看,养成习惯!模版的特化可以理解为模板的重载。原创 2024-09-17 21:51:16 · 662 阅读 · 0 评论 -
【CPP】CPP的命名空间&输入输出&缺省参数&函数重载
域影响编译的时候查找变量的/函数/类型出处(声明/定义)的逻辑,有了域隔离之后,就能避免名字冲突的问题,局部域和全局域除了会影响编译查找逻辑之外,还会影响变量的生命周期,命名空间域和类域不影响变量的生命周期。命名空间的这个操作就像是厕所一样,厕所有我家厕所,也有同事家厕所,都叫厕所你说你要用厕所,我咋知道你要用谁家的厕所?于是就加一个前缀说明一下,要用谁家的厕所。编译查找一个变量的时候,默认情况下,会优先查找局部域,然后是全局域,但不会去查找命名空间域,所以一般对于命名空间的访问,有以下几种。原创 2024-07-09 15:32:21 · 692 阅读 · 4 评论 -
【CPP】CPP的语法糖&引用&内联函数&nullptr
引用可以当作一个变量使用,但定义的引用在内存中并不存在,你可以理解为变量的一个别称,类似于typedef,只不过typedef是给类型取别名,而引用是给变量取别名int a = 10;ref = 1;//此时a就被改成了1了在以上代码,ref即a的引用,值得注意的是,这里ref的类型应该是int&和int应该是一体的编译过后ref会被替换成a,原本的ref和ref的定义会直接消失如果你想中途更改ref引用的目标变量,那请你把ref改成指针,因为ref压根就不能改int a = 10;原创 2024-06-23 00:13:47 · 568 阅读 · 8 评论 -
【CPP】CPP中类 -- class 的基本使用
类是面向对象的一种设计,其中封装了我们对对象的"描述",或者说对象的"特征"比方说我们要描述一个游戏玩家,那么这个玩家至少要有以下"特征"玩家在地图中的位置玩家的速度等等在本节我们也会不断地举玩家这个例子int x, y;int speed;int main()//创建一个player变量//创建一个player变量一般称创建一个新变量的过程为"实例化",新的变量称为"对象"类的基础定义其实和结构体没什么两样,但以下我们来讲讲类的进阶玩法static。原创 2024-06-26 13:51:42 · 1022 阅读 · 2 评论 -
【CPP】CPP的内存管理
内存池是向堆申请的一部分空间,用来专门存放经常需要申请和释放内存的数据,内存池与堆是独立开的,所以如果想从内存池中申请空间,就不能用在堆申请空间的那套模式,于是就有了以上模式,相当于手动模拟申请空间,只不过实际上申请的是内存池的空间。的区别,主要还是体现在CPP引入的一些新内容上,为了适配CPP引入的新内容,前者是后者的升级版。CPP可以继续使用C的内存管理方式,但CPP引入了更加方便的关键字用于内存管理,即。,也是可以手动调用的,但构造函数没办法手动调用,就是能靠。的定义,前者只是后者的一部分而已。原创 2024-07-22 20:20:10 · 906 阅读 · 0 评论 -
【CPP】CPP的模板(前篇)
模板是分割C和C++的重要的分水线,决定了C语言注定不能取代C++设计模板一般咱称作为泛型编程,泛型编程即通过数据类型编写代码,使得同一段代码能够不断复用,提高了代码的复用性模板一般分为函数模板类模板public:,_size(0),_capa(n){}~Stack()_size = 0;_capa = 0;"原创 2024-07-22 20:45:48 · 1093 阅读 · 0 评论 -
【CPP】CPP的STL(前篇)
简单来说:CPP在有了模板之后,很多重复性质的代码就不需要自己手撕很多遍了,甚至说有前人做了一个库,把常见的算法,数据结构啥的放进库里面,这些数据结构,算法啥的全都采用了模板类和模板函数的形式,使得这个库里的代码复用率极高,况且写这个库的人都是大佬级别的大佬,效率也很不错,所以在CPP实际开发中,就不需要自己再造轮子了,调用这个库里的玩意就行STL目前有两个需要去学习的版本,一个是微软家的PJ版,一个是GCC(Linux)的SGI版,这俩调用的效果都是一样的,只是底层不一样,需要了解一下。原创 2024-08-12 21:47:59 · 850 阅读 · 0 评论