C++
文章平均质量分 78
l15799033407
这个作者很懒,什么都没留下…
展开
-
C++中模板以及模板实例化都放在头文件
前言根据之前的习惯,我们一般会把一个函数的声明放在.h文件中,把函数的实现放在.cpp文件中,但是涉及到模板时,这种组织方式会报错。先放结论:涉及到模板和模板特例化时,我们一般将模板和模板特例化一起放在对应的.h文件中。问题的产生通过下例来说明问题。例如在array.h文件中有模板类array:// array.htemplate <typename T, int SIZE>class array{ T data_[SIZE]; array (const...转载 2021-09-22 11:41:18 · 2005 阅读 · 2 评论 -
运算符重载
运算符重载,是C++多态的表现形式之一,可以通过对运算符进行重载来实现运算符特定的功能。运算符重载一般具有以下原则:(1)不可重载不存在的运算符,如重载**来表示平方等;(2)重载后的运算符与原来的运算符优先级、结合性以及操作数数目相同,如双目运算符不能重载为单目;(3)保留运算符本身的含义,如“+”号重载后应该保持其“求和”的自然含义;(4)操作数中至少有一个为自定义类型,如重载运算符中参数都是int、double等类型是不允许的;对于运算符重载可通过成员函数和非成员函数实现,这二者的区别如转载 2021-07-05 10:07:10 · 161 阅读 · 0 评论 -
一致性哈希
原文链接:https://www.zsythink.net/archives/1182在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点,那么,我们先来描述一下这个经典的分布式缓存的应用场景。场景描述假设,我们有三台缓存服务器,用于缓存图片,我们为这三台缓存服务器编号为0号、1号、2号,现在,有3万张图片需要缓存,我们希望这些图片被均匀的缓存到这3台服务器上,以便它们能够分摊缓存的压力。也就是转载 2021-06-26 15:01:25 · 107 阅读 · 0 评论 -
2021-03-08
new与malloc的10点区别1. 申请的内存所在位置new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。那么自由存储区是否能够是堆(问题等价于new是否能在堆上动态分配内存),这转载 2021-03-08 23:48:42 · 109 阅读 · 0 评论 -
2021-03-08
其实,不用分为三类,只有两类即可。传值和传引用。为什么会出现传地址(即传指针)呢?本质就是大家一致对传值和传地址概念的理解错误导致,也是对指针的概念的理解错误导致。概念**指针:**指针就是一个变量,如果非要说是一个特殊的变量也不为过,因为指针的初始化和解引用等不同的操作方式而已。就内存的分布来说,指针和一个变量在内存中存放是没有任何区别的,无非指针存放的是变量的地址。**传值:**传值无非就是实参拷贝传递给形参,单向传递(实参->形参),赋值完毕后实参就和形参没有任何联系,对形参的修改就转载 2021-03-08 14:25:35 · 89 阅读 · 0 评论 -
list容器的排序算法sort()
STL源码剖析——list容器的排序算法sort()前言 由于STL本身的排序算法sort接受的输入迭代器是随机访问迭代器,但是双向list链表容器的访问方式是双向迭代器,因此,不能使用STL本身的排序算法sort,必须自己定义属于自己访问的排序算法。我们从源码的剖析中,可以看到该排序算法思想类似于归并排序。list容器之排序算法sort 在该排序算法的实现过程中,定义了一个类似于搬运作用的链表carry和具有中转站作用的链表counter,这里首先对counter[i]里...转载 2020-12-26 09:09:44 · 414 阅读 · 1 评论 -
C++中类大小计算
1、首先类大小计算遵循结构体的对齐原则2、类的大小与普通数据成员有关,与静态成员变量和成员函数无关,包括(静态成员变量,静态成员变量函数,普通成员函数,静态常量等与类的大小均无关)3、虚函数对类的大小有影响,这是因为虚函数表指针带来的影响4、虚继承对类的大小有影响,这是由于虚基表指针的影响4、空类的大小为1对其原则:按照结构体中长度最长的变量进行对齐,例如:class A{public: int a; char b;};A a1;sizeof(a1);该案例输原创 2020-12-10 23:02:31 · 396 阅读 · 0 评论 -
队列操作中----循环队列
引用链接:https://www.cnblogs.com/yangming1996/p/6973849.html我们知道队列这种数据结构的物理实现方式主要还是两种,一种是链队列(自定义节点类),另一种则是使用数组实现,两者各有优势。此处我们将要介绍的循环队列其实是队列的一种具体实现,由于一般的数组实现的队列结构在频繁出队的情况下,会产生假溢出现象,导致数组使用效率降低,所以引入循环队列这种结构。本文将从以下两个大角度介绍循环队列这种数据结构:循环数组实现循环队列一、循环队列为了深刻体会...转载 2020-12-04 11:00:32 · 338 阅读 · 0 评论 -
C++中const使用总结
原文链接 https://blog.csdn.net/Eric_Jo/article/details/4138548C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。一、Const作用 如下表所示: No. 作用 ...转载 2020-12-01 20:12:29 · 95 阅读 · 0 评论 -
C++指针与引用之间的区别
相同点:他们都是和地址有关系的,我们可以看到指针指向一块内存,而引用是一块内存的别名;不同点:1指针是一个实体他在栈中有自己使用的空间,但是引用没有;2引用必须初始化,指针不用但是最好初始化3指针使用时必须加*,引用不用;4引用只能初始化一次是个专一的人,指针不是;5引用不用const去修饰,但是指针可以6指针和地址运用自增(++)不同,引用是值进行自增,而指针是地址进行自增;注意:引用的话,只是给变量起了一个别名,并不另外占用空间,而指针是要在栈中开辟空间的关于引.原创 2020-12-01 18:31:16 · 98 阅读 · 0 评论 -
虚函数与纯虚函数
虚函数与纯虚函数1、虚函数关键字virtual用于类内成员函数定义时,为了重载和多态的需要,核心为:利用父类定义的指针可以指向子类的对象2、class Cman{ public: virtual void Eat(){……}; void Move();private:};class CChild : public CMan{ public: virtual void Eat(){……}; private:原创 2020-11-21 18:08:04 · 109 阅读 · 0 评论 -
2020-11-20
C++中static关键字的使用注意事项1、static修饰成员变量时,所有的对象只保存一个该成员变量,某一个对象中该静态成员变量改变,则其他对象中该变量随之改变;另外静态成员变量需要在类外初始化,既是类内定义,类外初始化。2、static修饰成员函数,static修饰的成员函数不能访问非成员变量,只能修饰static修饰的成员变量,static类成员函数是没有this指针的,...原创 2020-11-20 23:21:13 · 75 阅读 · 0 评论