![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 79
滋巴糯米团
这个作者很懒,什么都没留下…
展开
-
C++中的多态
多态就是不同继承关系的类对象,调用同一个函数得到不同结果的行为,就如同成人和学生去买票,成人买的是成人票,学生买的是学生票。继承要实现需要满足两个条件:(1)必须通过基类的指针或者引用调用虚函数。(2)调用的函数必须是virtual修饰的虚函数。具体可见下图: 虚函数重写就是派生类中有一个和基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型。函数名字,参数列表完全相同),称子类的虚函数重写了基类的虚函数。具体代码如下:1.3、虚函数重写的两个例外 虚函数的重写有两个例外:原创 2022-06-22 22:29:02 · 288 阅读 · 1 评论 -
C++类和对象总结(三)
初始化列表就是在构造函数后面以冒号为开始,用逗号做分隔成员变量进行初始化的方法,具体操作如下:1.2、初始化列表特性 (1)每个成员变量在初始化列表中只出现一次。 (2)引用成员变量,const成员变量,自定义类型的成员变量都必须放到初始化列表进行初始化。具体实例如下:2、explicit关键字 explicit关键字用于防止隐式类型转换,具体可见如下代码: 上述代码中d1=2019这行代码,编译器首先会用2019这int类型数字,自动构造出一个Date类型的对象原创 2022-06-16 15:27:54 · 201 阅读 · 0 评论 -
C++面向对象总结(二)
类中包含6个默认成员函数,分别为(1)构造函数 (2)析构函数 (3)拷贝构造函数 (4)赋值运算符重载函数 (5)const修饰的成员函数 (6)取地址及const取地址操作符重载,这6个默认成员函数就算我们不写,编译器也会自动生成。 构造函数的函数名和类名相同,并且没有返回值,在实例化对象时会自动调用,并且只会调用一次,用于初始化成员变量。具体看如下代码: 上述代码中,我们可以通过person的构造函数,给对象小明进行初始化,我们可以得到对象xiaomin的name = “小明”原创 2022-06-16 09:57:47 · 322 阅读 · 0 评论 -
C++面向对象总结(一)
面向过程:主要关注的是做什么,怎么做的这个过程,比如:吃饭(),睡觉(),打游戏()这些过程 面向对象:主要关注的是对象,把对象作为基本单位,靠对象可以实现很多工作(过程),比如:小红.打游戏(),小红.吃饭(),洗衣机.洗衣服()等等 类是面向对象的基础,而类的实现可以通过class关键字实现,类中包含类的成员变量和成员函数,具体使用方法如下代码: 其中classname可以自己定义,作为类的名称,而int a 和int b为成员变量,void fun()为成员函数。原创 2022-06-15 15:30:32 · 187 阅读 · 0 评论 -
C++基础知识二
引用就是给变量去别名,不会新开辟空间,引用和被引用对象使用同一个空间。具体使用方法如下:1.2、引用特性 (1)引用必须需要初始化 (2)一个变量可以被多次引用 (3)常引用,引用者const修饰的变量或常数时,需在前面加入const (4)可以引用传参或将引用作为返回值 1、指针是一个变量,存储的是变量(对象)的地址,引用是变量的别名 2、指针可以为空,引用定义时必须初始化 3、指针在初始化之后可以改变指向,引用在初始化之后不可在改变原创 2022-06-14 15:06:25 · 70 阅读 · 0 评论 -
C++基础知识一
在C/C++中存在大量变量,函数和类的名称,难免有相同的命名,导致不同的函数或者变量不同但是名字相同就会导致很多命名冲突。为了避免这些命名冲突或名字污染,因此就引入了namespace关键字。 namespace关键字j的具体使用方法如下:(1)普通定义 (2)嵌套定义1.2、namespace使用 namespace关键字的使用方法如下:(1)通过using关键词引入全局 (2)在函数提内直接使用2、C++中的输入输出 C++中的输入输出分别可以通过cin和cout进行实原创 2022-06-14 15:05:26 · 76 阅读 · 0 评论 -
定长内存池
定长内存池一、前言二、定长内存池简介三、定长内存池成员变量及成员函数声名四、成员函数定义五、效率分析一、前言 内存池化技术简单来说就是提前向系统申请一大块空间,后面需要空间的时候直接去大块空间中取,就不用频繁的向系统要,降低系统频繁建连的资源开销。如你要去河边挑水喝,每次想喝的时候都得去河边挑水,但如果你在加旁边挖一个小池塘,你直接把谁灌进去,下次你要喝水的时候就不用去河边挑水,直接在家门口就能喝到,这就很方便。二、定长内存池简介 定长内存池就是内存池被申请后被提前分块,每次获取的小内存原创 2022-04-18 20:37:19 · 135 阅读 · 0 评论 -
二叉搜索(排序)树
二叉搜索树二叉搜索树简介二级目录三级目录二叉搜索树简介二级目录三级目录原创 2021-12-15 15:42:37 · 2380 阅读 · 0 评论 -
哈希表的简单理解
哈希表的简单理解一、哈希表简介二、哈希表的映射方式1、直接定值法2、除留余数法2.1、负载因子a2.2、哈希冲突三、哈希表种类1、闭散列1、开散列一、哈希表简介 哈希(散列)表可以看成一个数组,在存入数值或元素的时候通过映射关系,找到数组对应的位置就可以将元素存入数组中,这样在不存在哈希冲突情况下,查找该元素的效率为O(1)。二、哈希表的映射方式1、直接定值法 如上图所示,直接定值原创 2021-12-14 17:19:32 · 583 阅读 · 0 评论 -
C++中的继承
继承继承简介继承方式多继承继承中的问题1、基类和子类成员同名会怎样?2、基类中的友元函数,子类能继承没?3、继承中基类和子类,构造析构顺序4、多继承造成的菱形继承问题继承简介 继承就子类继承父类或基类的全部成员函数和成员变量,而且在此基础上继承的子类还可以自己添加自己的成员,如上图所示,子类1,不仅继承了父类的_name和_status_num,而且自身还添加了一个_sex,子类2则多了_is_student,这个与类和对象有点像,只不过这个对象也使类,而原创 2021-10-02 11:47:15 · 157 阅读 · 0 评论 -
Vector和List容器的区别
Vector和List容器的区别 Vector和List都是STL常见的容器,都能存储不同类型的变量,那么有了Vector容器为什么还需要List容器呢!其实它们各有个的优点,如下列表格所示容器VectorList底层结构动态顺序表,是一个连续的存储空间带头节点的双向循环链表访问方式随机访问,访问某个节点的时间复杂度是O(1)不支持随机访问,访问某个节点需要从头节点往后遍历,时间复杂度为O(n)插入删除插入和删除效原创 2021-08-27 16:49:19 · 204 阅读 · 0 评论 -
Vector迭代器失效问题
Vector迭代器失效问题迭代器意义发生改变野指针报错迭代器意义发生改变 我们在使用Vector迭代器的时候可能遇到迭代器失效的问题,使结果达不到我们预期的效果,首先就是迭代器意义发生改变的问题,我们看下面代码。#include <iostream>#include <vector>using namespace std;int main(){ vector<int> v{1,2,2,4,5,6,7}; v原创 2021-08-27 15:37:46 · 269 阅读 · 0 评论 -
String类模拟实现,遍历方式以及深浅拷贝问题
@String类遍历方式以及深浅拷贝问题#String类的三种遍历方式 法一:for循环遍历 string v("abcdefg"); for(int i = 0; i < v.size(); i++) { cout<< v[i] <<endl; } 法二:迭代器遍历 string v("abcdefg"); string::iterator it = v.begin(); wh原创 2021-08-26 21:41:44 · 84 阅读 · 0 评论 -
C++之快速上手模板
C++之快速上手模板函数模板类模板函数模板 当我们写一个函数的时候,我们每次都必须确定传参的指定类型,而且一个函数你确定传参时是int型就不能传double型的变量,在C语言中我们想给功能一样的函数,传不同类型的变量,我们得写多个同样的函数,这样就很麻烦,这时就需要C++中的模板,具体使用情况,及使用方法如下:int add(int a,int b)//这个函数只能传入int型参数{ return a + b;}double add(double a,double b)//这个函数原创 2021-06-06 16:53:41 · 66 阅读 · 0 评论 -
C++中的内存管理
C/C++中的内存管理1、C/C++中的内存分布二级目录三级目录1、C/C++中的内存分布1、C/C++中的内存分布 上图就是C和C++在内存中存储的分布图,由上到下,对应着内存中的高地址到低地址。此次我主要介绍的二级目录三级目录1、C/C++中的内存分布.........原创 2021-06-06 15:37:58 · 198 阅读 · 1 评论