![](https://img-blog.csdnimg.cn/20210512134928163.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++复习记录
文章平均质量分 65
C++
DannieG
这个作者很懒,什么都没留下…
展开
-
C++ STL容器
容器容器(container)用于存放数据的类模板。STL 对定义的通用容器分三类:顺序性容器、关联式容器和容器适配器。顺序性容器 是 一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的操作改变这个位置。这个位置和元素本身无关,而和操作的时间和地点有关,顺序性容器不会根据元素的特点排序而是直接保存了元素操作时的逻辑顺序。vector(可以看作动态数组)、list (双向链表)、deque (双端队列)关联式容器 和 顺原创 2021-05-11 09:22:59 · 83 阅读 · 0 评论 -
C++ 内联函数inline
内联函数,像普通函数一样被调用,但是在调用时并不通过函数调用的机制而是编译的时候直接在调用点处展开,这样可以大大减少由函数调用带来的开销,从而提高程序的运行效率。类内定义成员函数默认是内联函数类外定义成员函数,若想定义为内联函数,需用关键字 inline 声明 内联函数不是在调用时发生控制转移关系(普通函数是在调用的时候控制转移),而是在编译阶段将函数体嵌入到每一个调用该函数的语句块中,编译器会将程序中出现内联函数的调用表达式用内联函数的函数体来替换。 普通函数是将程序执行转移到被调用函原创 2021-05-11 09:21:22 · 204 阅读 · 0 评论 -
C++ 强制类型转换
static_cast:用于数据的强制类型转换,强制将一种数据类型转换为另一种数据类型。用于基本数据类型的转换将空指针转化为目标类型的空指针将任何类型的表达式转化为void类型用于基类和派生类之间指针或引用的转换。上行转换是安全的(派生类的指针或引用转换成基类表示),下行转换由于没有动态类型检查,所以不安全,最好用dynamic_cast。const_cast:强制去掉常量属性。不能用于去掉变量的常量性,只能用于去除指针或引用的常量性。reinterpret_cast:改变指针或引用的类.原创 2021-05-11 09:20:16 · 143 阅读 · 0 评论 -
C++ 指针
(主要整理的是个人不太懂的地方)野指针和悬空指针指针指向了一块随机的空间,不受程序控制。野指针:未初始化的指针,其指针内容为一个垃圾数,不能确定其具体指向。野指针不能判断是否为NULL来避免。要避免只能记得赋初值。悬空指针:指针正常初始化,曾指向一个对象,该对象被销毁了,但是指针未制空,那么就成了悬空指针。因为在 free§ 之后,p 指针仍然指向之前分配的内存,如果这块内存暂时可以被程序访问并且不会造成冲突,那么之后使用 p 并不会引发错误。为了避免出现“悬空指针”引发不可预知的错误原创 2021-05-11 09:19:24 · 62 阅读 · 0 评论 -
C++ 模板
函数模板与类模板函数模板编写与类型无关的代码模板的声明或定义只能在全局,命名空间或类范围内进行。不能在局部范围,函数内进行。< >内的是模板形参,不能为空会根据调用这个函数时传入的参数的类型推导出函数模板的参数类型。当类型参数的含义确定后,就会以这个函数模板为样板,生成一个函数,称为函数模板的实例化。template<typename T>T abs(T x) { return x < 0? -x : x;}函数模板也可以重载,只要形原创 2021-05-11 09:17:19 · 80 阅读 · 0 评论 -
C++面向对象
面向对象:对象是指具体的某一个事物,这些事物的抽象就是类,类中包含数据(成员变量)和动作(成员方法)。面向对象的三大特性:封装:将具体的实现过程和数据封装成一个函数,只能通过接口进行访问,降低耦合性。继承:子类继承父类的特征和行为,子类有父类的非 private 方法或成员变量,子类可以对父类的方法进行重写,增强了类之间的耦合性。多态:多态就是不同继承类的对象,对同一消息做出不同的响应,基类的指针指向或绑定到派生类的对象,使得基类指针呈现不同的表现方式。(继承、多态 -> 代原创 2021-05-11 09:16:14 · 749 阅读 · 0 评论 -
C++面向对象-多态
多态同一名称,不同的功能实现方式。多态的实现主要分为静态多态和动态多态,静态多态主要是重载,在编译的时候就已经确定;动态多态是用虚函数机制实现的,在运行期间动态绑定。虚函数是运行时多态的基础。 多态就是不同继承类的对象,对同一消息做出不同的响应(函数重写,不同继承类的对象的函数实现不一样) 多态是通过虚函数实现的,虚函数的地址保存在虚函数表中,虚函数表的地址保存在含有虚函数的类的实例对象的内存空间中,对象里存着对应虚函数表的地址。 基类的指针指向或绑定到派生类的对象,调原创 2021-05-11 09:12:36 · 177 阅读 · 0 评论 -
C++面向对象-继承和派生
class 派生类名:继承方式1 基类名1,继承方式2 基类名2,...公有继承 public:派生类中可以直接访问基类中的public和protected,通过派生类的对象只能访问基类的public,基类的private是都不能私有继承 private:基类的public和protected在派生类中都变成private,在派生类内看作private来用,通过派生类对象就都不能访问保护继承 protected:基类的public和protected在派生类中都变成 protected,在派生类内看作原创 2021-05-11 09:11:31 · 386 阅读 · 0 评论 -
C++面向对象-封装
(对C++面向对象没有一定了解的可能不太看得懂,这只是一个对部分重点的整理,主要是个人想要记的内容)public:可以被任意实体访问,相当于是类与外部的接口private:只允许本类的成员函数访问,就是只有类内部能用,对象是不能调用的,子类的也不行。(保护内部数据不被随意修改)protected:只允许子类及本类的成员函数访问,外部的也不行,对象也不行。就比private多了一个子类可以用。成员函数写在类外的话得 返回值 类名::函数名()成员函数有个隐含的形参 this 指针,在用的时候指向原创 2021-05-11 09:10:30 · 298 阅读 · 0 评论 -
C++程序编译过程
汇编代码:特定的汇编语言和特定的机器语言指令集是一一对应的,通过汇编过程转换成机器指令目标代码:机器指令文件,常被称作二进制文件。目标代码尽管已经是机器指令,但是还不能运行,因为目标程序还没有解决函数调用问题,需要将各个目标程序与库函数连接,才能形成完整的可执行程序[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xpuM9KHb-1620693890887)(upload/image-20210509112528703.png)]预处理 -》 编译 -》 汇编 -原创 2021-05-11 09:05:07 · 168 阅读 · 0 评论 -
C++复习整理---i++和++i
理论上++i更快,实际与编译器优化有关,通常几乎无差别。//i++实现代码为: int operator++(int) { int temp = *this; ++*this; re原创 2020-10-13 23:50:07 · 1116 阅读 · 0 评论 -
C++复习整理---指针、函数、const相关
指针int *pp:p指向的地址*p:p指向的地址上的值&p:存放指针p的地址constconst int p int const p这两个相同的指向整型常量的指针,指向的位置的值不能改变,可以改指针本身。理解成先const int或int const,再为指针。就可以让这个指针指向有另一个值的另一个位置。如果想要在同一个位置改值,就可以先让另一个指针指向这个位置,然后再从另一个指针改值。比如:int u = (int)p;//得有(int),不然会提示是const int*原创 2020-10-13 10:18:49 · 136 阅读 · 0 评论