
C++
H_Expect
长风破浪会有时,直挂云帆济沧海。
展开
-
C++ | 多态
C++ 多态:对于通过基类指针调用基类和派生类中都有的同名、同参数表的虚函数的语句,编译时并不确定要执行的是基类还是派生类的虚函数;而当程序运行到该语句时,如果基类指针指向的是一个基类对象,则基类的虚函数被调用,如果基类指针指向的是一个派生类对象,则派生类的虚函数被调用。同一操作作用于不同的类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,得到不同的结果。1. 虚函数:在某基...原创 2019-03-18 23:05:49 · 226 阅读 · 0 评论 -
C++ | 函数重载
函数重载重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形参(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。符号生成规则:C语言:只与函数名有关C++:由3部分构成: 1. 函数返回值 ...原创 2019-07-22 23:47:33 · 224 阅读 · 0 评论 -
C++ | 顺序容器(vector、list、deque)
C++标准模板库提供三种顺序容器:vector,list 和deque。vector 类和 deque 类是以数组为基础的,list 类是以双向链表为基础的。1.vector图1 vector底层结构如图1所示,矢量 vector 类提供顺序表。下标运算符[ ] 有效。矢量可以用来实现队列、堆栈、列表和其他更复杂的结构。vector支持随机访问迭代子 。vector的迭...原创 2019-08-04 21:21:02 · 760 阅读 · 0 评论 -
C++ | 继承
继承作为C++三大特性之一,有着举足轻重的地位。下面是关于继承的一些知识点,可以帮助我们更好地学习和理解继承!!1. 继承的本质:代码复用 2. 继承和派生3. 派生类继承了基类的什么?派生类继承了基类除构造函数和析构函数以外的所有成员4. 派生类的内存布局如下图,base为基类,derive为派生类,派生类的内存布局如右边图形所示:在命令界面查看...原创 2019-08-02 23:46:00 · 277 阅读 · 0 评论 -
C++ | 面向对象思想(OOP)
面向对象的基本思想是:从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可能地运用人类的自然思维方式。面向对象更加强调运用人类在日常生活的逻辑思维中经常采用的思想方法与原则,如抽象、分类,继承、聚合、多态等。OOP:面向对象编程,是一种计算机编程架构。OOP 的一条基本原则是:计算机程序是由单个能够起到子程序作用的单元或对象组合而成。如下图,将实体的属性和行为抽象为对...原创 2019-07-21 00:44:21 · 474 阅读 · 0 评论 -
C++ | new和malloc的区别
看过不少人的面经,经常问到 new 和 malloc 的区别。在探究 malloc和new的区别时,我们首先应该知悉这二者的基本概念与用法。malloc/free是C++/C语言的标准函数,new/delete是C++的运算符。1. malloc 和 free 的函数原型:void * malloc(size_t_size); //malloc 函数原型void * ...原创 2019-07-20 23:48:15 · 275 阅读 · 0 评论 -
C++ | 类中4个默认函数
类中4个默认的函数 函数名 简介 特点 构造函数 初始化对象所占的内存空间(赋资源) 可以重载 不依赖对象 不能手动调用 有 this 指针 析构函数 释放对象所占的资源 不可重载 依赖对象调用 手动调用(不建议,析构函数的调用退化普通函数的调用) 有 this ...原创 2019-07-24 23:44:26 · 364 阅读 · 0 评论 -
C++ | 编译链接运行原理
源文件需要编译链接的原因:由于计算机只能识别机器语言,不能直接识别我们所编写的 .c 或 .cpp 文件。因此,需要将这些文件通过编译链接过程生成最终的可执行文件,使得计算机能够识别进而运行。编译链接的四个阶段:预编译、编译、汇编、链接。一、预编译阶段将源代码文件.c 或 .cpp 和相关的头文件.h 等预编译成一个 .i 文件gcc -E hello.c -o hel...原创 2019-07-17 23:32:13 · 270 阅读 · 0 评论 -
C++ | 4G虚拟地址空间布局
最近复习到C++的虚拟地址空间布局,这是之前学习过的内容,但是有些忘记了。画图了解一下吧,图像便于记忆!(这里借用舍友饭_团画的图,博主已经在小本本上画过了,大家也要自己画一下。)虚拟内存,顾名思义,是虚拟的内存,不是真实存在的内存。操作系统给每个进程分配了4G的虚拟内存,而不是内存。也就是说程序运行时,操作系统先将相关的文件和数据从磁盘上读取,再通过地址映射到虚拟内存上,内存通过和虚...原创 2019-07-19 23:42:46 · 896 阅读 · 0 评论 -
C++ | this指针
关于 this 指针,有这样一段描述:当你进入一个房子后,你可以看见桌子、椅子、地板等,但是你却看不到房子全貌了。对于一个类的实例来说,你可以看到它的成员函数、成员变量,但是实例本身呢?this 指针就是这样一个时时刻刻指向该实例本身的指针。this 指针易混的几个问题如下:(1) this 指针本质是一个函数参数,只是编译器隐藏起形式的、语法层面上的参数。this 指针只能在成员函数...原创 2019-07-06 23:42:09 · 180 阅读 · 0 评论 -
C++ | const与#define的区别
在之前的博客里写到了C语言中的 const 关键字,而 const 在C++中也有广泛的使用。在C++中,可以用 const 定义常量,也可以用#define定义常量。但是这两者之间又存在区别。先说一下#define常量的概念。define:无参宏定义的一般形式为:#define标识符字符串define 函数定义一个常量。常量类似变量,不同之处在于:在设定以后,常量的值无法更改。作...原创 2019-07-01 22:48:22 · 219 阅读 · 0 评论 -
负载均衡
什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。负载均衡开...原创 2019-07-15 23:42:00 · 272 阅读 · 0 评论 -
C++ | 指针与引用
指针是C++提供的一种颇具特色的数据类型,允许直接获取和操纵数据地址,实现动态存储分配。一个数据对象的内存地址称为该数据对象的指针。指针可以表示各种数据对象,如简单变量、数组、数组元素、结构体,甚至函数。即指针具有不同的类型,可以指向不同的数据存储体。引用是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价。引用是C++一个很重要的特性。引用的特点:1. 一...原创 2019-07-03 23:53:01 · 181 阅读 · 0 评论 -
C++ | 内置类型对象的标准转换
C++定义了一组内置类型对象之间的标准转换,在必要时它们被编译器隐式地应用到对象上。隐式类型转换发生在下列这些典型情况下。1.在混合类型的算术表达式中;在这种情况下最宽的数据类型成为目标转换类型,这也被称为算术转换(ArithmeticConversion),例如:int ival = 3;double dval= 3. 14159;ival + dval; // i...原创 2019-06-27 20:53:34 · 321 阅读 · 0 评论 -
C++ | 内联函数
内联函数(inline):在计算机科学中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展)。内联函数是指嵌人代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说,inline增加空间消耗换来的是效率提高,这方面和宏是一模一样的,但是inline在和宏相比没有付出任何额外代价的情况下更安全。...原创 2019-07-02 17:03:01 · 228 阅读 · 0 评论 -
C++ | 智能指针
智能指针,即智能指针对象,实现了自主的内存回收机制。智能指针是一个模板,由智能指针实例化出来的对象具有和常规指针相似的行为,但是智能指针能够自动的释放所指向的对象。 对编译器来说,智能指针实际上是一个栈对象,并非指针类型,在栈对象生命周期你即将结束时,智能指针通过析构函数释放由它管理的堆内存。智能指针的分类:不带引用计数的智能指针:auto_ptr、unique_ptr、scope...原创 2019-04-18 23:34:15 · 234 阅读 · 0 评论 -
C++实现简单内存池
在探讨内存池前,我们需要回顾一下池的相关知识!池(pool):一组资源的集合。这组资源在服务器启动之初就被完全创建好并初始化,这称为静态资源分配。当服务器进入正式运行阶段,即开始处理客户请求的时候,如果处理该请求需要相关的资源,就可以直接从池中获取,无需动态分配。很显然,直接从池中取得所需资源比动态分配资源的速度要快很多,因为分配系统资源的系统调用都是很费时间的。当服务器处理完一个客户...原创 2019-07-27 21:42:49 · 309 阅读 · 0 评论