c++&服务端
基于c++语言的服务端开发技术
Mr_H9527
努力,奋斗
展开
-
C和C++的区别
带有默认值的函数C89标准中,c语言没有带有默认值的参数,c99之后才有给函数默认值既可以在定义处,也可以在声明处,但只能给一次默认值第一次声明时给最右边的参数一个默认值,第二次声明时给左边参数一个默认值也是合法的(vs2008中合法,但是vs2017中是非法的)赋默认值必须从右向左依次赋值,在调用时,如果没有给实参,则把参数默认值压栈,也可以只传没有默认值的那个参数。使...原创 2018-07-27 23:32:31 · 8093 阅读 · 0 评论 -
C++模板:函数模板
函数模板: 函数模板: 我们看这段代码,compare是一个函数名还是一个模板名?其实他是一个模板名。如果要把他看成一函数来使用,就要用一个类型来实例化这个模板,在使用时可以给其后尖括号中加上要使用的类型名,如下:用int类型给模板传参的过程叫做模板的实例化模板的实例化(显式实例化 隐式实例化):上面讲到的那些实例化都是隐式的实例化,...原创 2018-09-10 23:40:52 · 17785 阅读 · 2 评论 -
C++:深入理解编译和链接过程
深入理解编译链接我们知道,用c/c++语言编写程序的时候,必须要经过编译和链接过程,才能将我们c/c++的源代码转化为可执行文件(Windows下是.exe程序,Linux下是elf格式的可执行文件)。那么编译和链接过程到底做了什么,这个可执行文件又是被加载到哪里运行的呢数据和指令无论用哪种语言所写的代码,归根结底会产生两种东西:指令和数据。那哪些代码是指令,哪些代码是数据?所...原创 2018-07-22 16:52:11 · 5548 阅读 · 5 评论 -
c++继承与多态
继承多态继承的本质:代码的复用。类和类之间的三种关系:代理:被代理类的接口的功能子集 组合:a part of/has a,一个类是一个类的一部分 继承:is a/a kind of,一个类是另一个类的一种class Base//基类{public: int ma;protected: int mb;private: int mc;};cla...原创 2018-11-22 11:37:52 · 571 阅读 · 0 评论 -
epoll底层红黑树使用部分源码剖析:为什么使用红黑树以及如何使用红黑树
我们知道epoll的底层使用了红黑树来管理文件描述符,为什么会选择红黑树这种结构呢?以下是个人理解:epoll和poll的一个很大的区别在于,poll每次调用时都会存在一个将pollfd结构体数组中的每个结构体元素从用户态向内核态中的一个链表节点拷贝的过程,而内核中的这个链表并不会一直保存,当poll运行一次就会重新执行一次上述的拷贝过程,这说明一个问题:poll并不会在内核中为要监听的文...原创 2019-08-19 18:26:30 · 11944 阅读 · 1 评论 -
malloc底层工作原理——ptmalloc
概述本文主要分析ptmalloc中的对于每个内存块的管理方法:边界标志法和所有内存块的整体管理:分箱式内存管理。以及malloc()函数和free()函数的底层原理和工作步骤。边界标志法ptmalloc使用chunk实现内存管理,不管内存是在哪里被分配的,用什么方法分配,用户请求分配的空间在ptmalloc中都使用一个chunk来表示。用户调用free()函数释放掉的内存也并不是立即归...原创 2019-08-29 20:51:22 · 1779 阅读 · 0 评论 -
struct和class的区别
概述对于学习c/c++的同学来说,在面试的高频问题中,肯定会有struct和class的区别这一项,今天我们就从两个方面来看一下,struct和class的区别到底是什么。第一个是c中的struct和c++中的class的区别;第二个是c++中的struct和class的区别。c语言中的struct和c++中的class的区别在c语言中为了将一些变量组合起来做为一个整体使用,我们用到了...原创 2019-08-31 11:31:27 · 897 阅读 · 0 评论 -
红黑树和2-3树
概述这篇文章主要讲一下红黑树的产生起源,以及红黑树的五种特性,为什么红黑树会有这写特性。将会接触到一种新的数据结构:2-3树,以及它和红黑树的联系。红黑树的起源:2-3树大家都知道avl树是一种强平衡的二叉查找树,左右子树的高度差的绝对值不大于1.这样的一个规定让avl的查找效率大大提高,但不幸的是,再动态插入种保证树的完美平衡代价太高了。因此我们提出了一种新的结构2-3树,在2-3树...原创 2019-09-02 14:52:07 · 478 阅读 · 0 评论 -
红黑树的插入和删除
概述本篇文章主要讲述红黑树的插入和删除操作,而红黑树的查找操作和普通的二叉查找树完全相同,因此不用过多的介绍。因为向红黑树中插入或删除节点时会引起红黑树结构的变化,有时还会破坏红黑树的性质,所以为了在插入或者删除之后继续保持满足红黑树的性质,我们不得不做很多的工作,主要有左旋转,右旋转,改变节点颜色等。红黑树的查找在红黑树中查找一个键值是否存在时,首先从根节点开始,如果根节点的键值等于...原创 2019-09-02 17:04:07 · 317 阅读 · 0 评论 -
宏函数,内联函数和static函数的区别以及应用场景
概述宏函数,内联函数和static函数是c++中不同于普通函数定义的使用其他方式定义的函数,这三种函数有各自的特点和不同的适用场景,我们将在这篇文章中一一说明。先来看三者的定义。定义宏函数:一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。这种替换在预编译时进行,称作宏展开。宏函数归根结底还是一种宏...原创 2019-09-07 15:46:15 · 1222 阅读 · 0 评论 -
c语言中定义字符数组的各种情况及其区别
char [] = {"mrhhello"};char [] = {'m','r','h','h','e','l','l','o'};char [10] = {"mrhhello"};char[10] = {'m','r','h','h','e','l','l','o'};char *str = "mrhhello";上这五种定义字符串的方式有什么不同?一个程序运行时内存被分为四部分,分别是代码区...原创 2018-04-22 22:26:32 · 1411 阅读 · 0 评论