C++必须掌握的知识点
创始人
2024-04-30 17:47:20
0

面向对象的三大特性

封装

继承

  1. 父类中所有的非静态成员都会被子类继承下去,只是父类的私有成员被编译器屏蔽了,访问不到。
  2. 可以利用开发人员工具查看对象模型在这里插入图片描述
  3. 继承中,先构造父类,再构造子类,析构的顺序和构造的顺序完全相反
  4. 父类和子类有同名的成员时,可以利用域限定符来访问特定的值
  5. 如果子类中出现和父类同名的函数时,子类的这个函数会覆盖父类中的所有同名函数(override),如果想访问父类的,需要使用域限定符。
  6. 虚函数实现的底层就是虚函数表(vbtable和vbptr),具体可以看我的这篇文章:虚函数解析
    在这里插入图片描述
    在这里插入图片描述

多态

  1. 动态多态(运行时多态)的条件:有继承关系,子类重写(override)父类的虚函数
  2. 使用:用父类指针或者应用,指向子类的对象。
  3. 在多态中,通常情况下,父类的虚函数都是无意义的,主要是调用子类的重写内容,因此通常将虚函数改为纯虚函数。当类中有纯虚函数时,这个类就叫做抽象类(无法实例化对象)。
  4. 在使用多态时,如果子类中有属性使用到了堆空间,那么父类指针在释放时无法调用到子类的析构代码,因此父类的析构函数也应该改为虚析构函数或者纯虚析构函数

文件操作

文件的打开方式

示例代码:

#include 
#include 
#include 
using namespace std;
class Person{public:int age = 25;char name[64] = "张三";
};int main(){Person* p = new Person();p->age = 30;fstream out = fstream("person1.txt",ios::out|ios::binary);out.write((const char*)p,sizeof(Person));out.close();fstream in = fstream("person1.txt",ios::in|ios::binary);Person p2;in.read((char*)&p2,sizeof(Person));//  在win中 读出来的二进制是对的,但是在终端打印的时候会出现问题system("chcp 65001");cout << p2.name << " ," << p2.age <

在这里插入图片描述

以binary方式读写文件:read,write方法

模板

  1. 在使用模板的时候,头文件(.h)和实现的(.cpp)文件不能分文件编写。可以写在一起成为.hpp文件。

  2. 类模板不能进行自动类型推导,只能用<>显示指示类型
    在这里插入图片描述

  3. 类模板在模板参数列表中可以有默认参数在这里插入图片描述

  4. 函数模板可以进行自动类型推导,所以在使用模板函数的时候不用指定模板参数类型。

STL主要分为以下六类

容器:各种数据结构,用来存放数据

  1. vector:类似于数组在这里插入图片描述
    在这里插入图片描述

  2. string:字符串
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. list:类似于链表,内部有空间适配器进行内存管理在这里插入图片描述

  4. deque:双向队列
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. set:集合(set,mutil_set,unordered_set)在这里插入图片描述

  6. map:映射(map.mutil_map.unordered_map)

算法

  1. sort

  2. find

  3. copy

  4. for_each
    在这里插入图片描述

  5. find_if

  6. transform在这里插入图片描述

  7. adjacent_find:在这里插入图片描述

  8. binary_search:二分查找在这里插入图片描述

  9. merge:在这里插入图片描述

  10. 算术生成算法(头文件:numeric)在这里插入图片描述

  11. 集合(必须是有序序列)运算:set_intersection(交),set_union(并),set_difference(差)
    在这里插入图片描述

迭代器:容器与算法之间的桥梁

仿函数:行为类似函数,可作为算法的某种自定义策略。

  1. 函数对象:重载“()”的类其对象称为函数对象,也叫仿函数。函数对象可以有自己的状态,也可以作为参数进行传递。(也可以使用function<>模板类进行传递和接收)。
  2. 谓词:返回bool类型的仿函数称为谓词,接收一个参数的叫一元谓词,两个参数叫二元谓词。
  3. STL提供了一些内建函数对象:在这里插入图片描述

适配器:用来修饰容器,仿函数或者迭代器接口

  1. 概念:STL 提供了序列式容器,同时针对序列式容器提供了应用于不同场景的容器适配器,通俗讲适配器就是以序列式容器为底层数据结构,进一步封装了的为适应场景应用的容器。STL 中提供了三种适配器,分别为 stack,queue 和 priority_queue。

空间配置器:负责空间的配置和管理

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...