C++基础知识合集
文章平均质量分 80
这是博主在大学期间在编程学习中所遇到各种的C++的基础知识,包括C++STL以及底层实现原理,C++11和C++14新增特性,面向对象的思想等等,希望能够记录下来以便使用
旧巷小新
这个作者很懒,什么都没留下…
展开
-
C++之写在前面
文章目录1.c代码编译到执行的全过程1.c代码编译到执行的全过程第一次,经过预处理,源程序变为.cpp的源程序。第二次,进过编译处理,.cpp的源程序变为.s的汇编程序。第三次,经过汇编处理,.s的汇编程序变为.o的二进制程序。第四次,经过链接处理,.o的二进制程序变为.exe的可执行文件。...原创 2021-03-04 16:08:42 · 647 阅读 · 1 评论 -
C++之函数与变量
1、new分配内存按照数据类型进行分配,malloc分配内存按照指定的大小分配;2、new返回的是指定对象的指针,而malloc返回的是void*,因此malloc的返回值一般都需要进行类型转化。3、new不仅分配一段内存,而且会调用构造函数,malloc不会。4、new分配的内存要用delete销毁,malloc要用free来销毁;delete销毁的时候会调用对象的析构函数,而free则不会。5、new是一个操作符可以重载,malloc是一个库函数。6、malloc分配的内存不够的时候,可以用r原创 2020-12-05 10:11:19 · 1172 阅读 · 0 评论 -
C++之类与对象
封装:将抽象得到的数据和行为(或功能)相结合,形成一个有机整体,也就是将数据与操作数据的函数代码进行有机的结合,形成“类”,其中的数据和函数都是类的成员。继承:C++语言提供了类的继承机制,允许程序员在保持原有类的基础上,进行更具体更详细的说明。多态:是指一段程序能够处理多种类型对象的能力。这种多态性可以通过强制多态,重载多态,类型参数化多态,包含多态4种形式来实现。...原创 2020-12-04 23:09:14 · 468 阅读 · 1 评论 -
C++之继承与派生
文章目录1.类的继承与派生1.1 类的继承1.2 类的派生2.访问控制2.1公有继承2.22.31.类的继承与派生1.1 类的继承多继承和单继承:一个派生类可以同时有多个基类称为多继承: class Derived:public Base1,private Base2{};一个派生类只有一个直接基类称为单继承: class Derived:public Base1{}直接基类和间接基类:直接参与派生出某类的基类称为直接基类,基类的基类甚至更高的基类称为间接基类在类的定义中,除了要指定基类外,还原创 2020-12-11 23:47:35 · 726 阅读 · 0 评论 -
C++之多态及原理
文章目录1.多态性概述2.运算符重载3.虚函数4.纯虚函数与抽象类1.多态性概述多态分类:专用多态(重载多态和强制多态)和通用多态(包含多态和参数多态)重载多态:普通函数以及类的成员函数的重载都属于重载多态。强制多态:指将一个变元的类型加以变化,以符合一个函数或者操作的要求。包含多态:类族中定义不同类中的同名成员函数的多态行为,主要是通过虚函数来实现。参数多态:与类模板相关联,在使用的时候必须赋予实际的类型才可以实例化。多态从实现的角度分类:编译时的多态和运行时的多态编译时的多态:编译过程原创 2020-12-12 20:35:10 · 559 阅读 · 0 评论 -
C++之内存模型(内存区域)
文章目录1.C++五种存储区域:1.1堆1.2栈1.3自由存储区1.4全局/静态存储区1.5常量存储区1.C++五种存储区域:1.1堆堆,英文是 heap,在内存管理的语境下,指的是动态分配内存的区域。这个堆跟数据结构里的堆不是一回事。这里的内存,被分配之后需要手工释放,否则,就会造成内存泄漏。C++ 标准里一个相关概念是自由存储区,英文是 free store,特指使用 new 和 delete 来分配和释放内存的区域。一般而言,这是堆的一个子集,new 和 delete 操作的区域是 free原创 2020-12-04 17:38:41 · 740 阅读 · 0 评论 -
C++之动态内存以及智能指针
文章目录1.动态内存2.shared_ptr类1.动态内存new,在动态内存中为对象分配空间并返回一个指向该对象的指针,我们可以选择对对象进行初始化;delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存动态内存容易出现的问题:如果忘记释放内存,就会产生内存泄漏;如果在尚有指针引用内存的情况下释放了该内存,就会产生引用非法内存的指针2.shared_ptr类shared_ptr实现共享式拥有概念。多个智能指针可以指向相同对象,该对象和其相关资源会在“最后一个引用被销毁”时候释原创 2020-12-09 22:56:55 · 714 阅读 · 0 评论 -
C++之指针和引用
1.指针有自己的一块空间,指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元,即指针是一个实体。而引用只是一个别名;2.使用sizeof看一个指针的大小是4,而引用则是被引用对象的大小;3.指针可以被初始化为NULL,而引用必须被初始化且必须是一个已有对象的引用;4.作为参数传递时,指针需要被解引用才可以对对象进行操作,而直接对引用的修改都会改变引用所指向的对象;5.可以有const指针,但是没有const引用;6.指针在使用中可以指向其它对象,但是引用只能是一个对象的引用,不原创 2020-12-04 18:12:38 · 840 阅读 · 0 评论 -
C++之结构体、共用体和大小端
文章目录:结构体:结构体是一种复杂的数据类型,是数目固定,类型不同的若干有序变量的集合。结构体变量的声明:(1)先定义结构体类型,再定义结构体变量struct student{ char name[20]; char sex; long num; float score[3];};struct student stu1,stu2;利用这种定义形式,可以在程序的任何地方,在先定义后使用的原则下,定义属于该结构体类型的变量(2)定义结构体类型同时定义结构体变量struct stude原创 2020-12-04 10:52:10 · 1102 阅读 · 0 评论 -
C++之static、const、constexpr、volatile关键字
(1)static全局变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量。内存中的位置:全局/静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。与全局变量区别:static全局变量在定义该变量的当前源文件内有效,在同一源程序的其它源文件中不能使用它。而普通的全局变量在各个源文件中都是有效的(当一个源程序由多原创 2020-12-04 17:59:03 · 1719 阅读 · 0 评论 -
C++之auto、decltype、typeid、initializer_list、explicit关键字
文章目录1.auto关键字2.decltype关键字1.auto关键字定义:在C++11新标准中引进了auto类型说明符,使用它能够让编译器代替我们去分析表达式所属的类型。规则1:auto一般会忽略顶层const,保留底层const,引用同样适用此规则。例如:int i=2;const int ci=i,&cr=ci;auto b=ci;//b是个整数(ci的顶层const被忽略)auto c=cr;//c是个整数(cr是ci的别名,ci本身是一个顶层const)auto d=&原创 2021-03-08 19:42:40 · 442 阅读 · 0 评论 -
C++之STL线性容器
文章目录1. 线性容器1.1 vector容器1.1.1 容器特性1.1.2 vector容器的初始化1.1.3 访问元素1.1.4 插入元素1.1.5 删除元素1.1.6 容器迭代器1.1.7 容器的大小与判断1.1.8 其他函数1.1.9 emplace操作1.1.10 vector其他特性1.1.11 相关面试题1.用==或者!=比较两个数组、vector对象是否相等2.vector实现内存的管理1.2 list容器1.2.1 插入元素1.2.2 删除元素1.2.3 查找元素1.2.4 访问元素1.2原创 2021-09-05 18:40:39 · 421 阅读 · 0 评论 -
C++之STL非线性容器
文章目录1. priority_queue1. priority_queue定义:在优先队列中,元素赋予优先级,具有优先级最高先出的特征。例如:priority_queue<type,container,function>。其中type:数据类型;container:实现优先队列的底层容器,例如vector,deque,但不能用list; function:元素之间的比较形式。后面两个参数可以省略,一旦省略,默认是大根推常见成员函数:bool empty() const;、int si原创 2021-09-05 18:43:27 · 512 阅读 · 0 评论 -
C++之STL的迭代器与不同点
文章目录1.vector和list的区别1.vector和list的区别avector底层实现是数组;list是双向链表b.vector支持随机访问,list不支持c.vector是顺序内存,list不是d.vector在中间节点进行插入删除会导致内存拷贝,list不会e.vector一次性分配好内存,不够时才进行2倍扩容;list每次插入新节点都会进行内存申请。f.vector随机访问性能好,插入删除性能差;list随机访问性能差,插入删除性能好。...原创 2020-12-05 00:16:32 · 335 阅读 · 0 评论 -
C++11之新增特性
文章目录1.给了一个函数将其写成lambda表达式,捕获列表中&和=有什么区别,默认是什么捕获1.给了一个函数将其写成lambda表达式,捕获列表中&和=有什么区别,默认是什么捕获原创 2021-03-04 18:28:43 · 235 阅读 · 1 评论 -
C++之网络编程Socket
文章目录1.网络编程懂吗 select poll epoll啥的讲讲1.网络编程懂吗 select poll epoll啥的讲讲原创 2021-03-06 08:49:15 · 132 阅读 · 0 评论 -
C++网络编程之I/O多路复用、IO模型
文章目录1.select模型1.1 select模型服务程序的流程10.相关面试题1.网络编程select、poll和epoll1.epoll的边缘触发和水平触发了解吗?分别说一下特点和区别。3.epoll两种触发方式 适用场景1.select模型1.1 select模型服务程序的流程10.相关面试题1.网络编程select、poll和epoll1.epoll的边缘触发和水平触发了解吗?分别说一下特点和区别。3.epoll两种触发方式 适用场景...原创 2021-04-02 22:14:49 · 1200 阅读 · 0 评论