C++知识总结
文章平均质量分 70
李贰一
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 继承知识点总结
概念:继承机制是面向对象程序设计使代码可以复用的最重要的手段格式class 派生类:继承方式 基类类成员/继承方式 public继承 protected继承 private继承 基类public成员 派生类的public成员 派生类的protected成员 派生类的private成员 基类的private成员 在派生类中不可见 ...原创 2018-04-16 15:35:44 · 371 阅读 · 0 评论 -
指针和引用的区别
指针和引用的区别 引用在定义时必须初始化,指针没有要求 引用在初始化时引用一个实体后,就不能再进行引用其他实体,而指针可以在任何时候指向任何一个同类型实体 没有NULL引用,但有NULL指针 在sizeof中含义不同:引用结果为引用类型的大学,但指针始终是地址空间所占字节个数 引用自加既引用实体增加1,指针自加即指针向后偏移一个类型的大小 有...原创 2019-04-04 16:41:54 · 173 阅读 · 0 评论 -
map&unordered_map的区别
map和unordered_map1.底层结构不同:map——>红黑树,unordered_map——>哈希桶2.使用场景:期望有序则用map,期望效率高则用unordered_map3.效率:map低——>O(logN),unordered_map高——>O(1)4.是否扩容:map不需要扩容,unordered_map需要进行扩容——>降低哈...原创 2019-04-09 10:40:26 · 1375 阅读 · 0 评论 -
cin和geline(cin, str)一起使用容易被忽略的一个坑(异常)和解决方法
int main(){ int n; while (cin >> n) { string res; for (int i = 0; i < n; i++) { string tmp; getline(cin, tmp); res = res + tmp; } cout << res << endl; } sys...原创 2019-04-13 08:13:07 · 625 阅读 · 1 评论 -
new/delete和malloc/free的区别
new/delete和malloc/free的区别maollc/free是函数,new/delete是操作符 new申请的空间可以初始化,malloc不行 malloc的返回值是void*,所以需要计算空间大小并传递且使用时必须更改类型,new不需要 malloc申请失败返回NULL,new需要捕获异常 malloc申请的空间一定在堆上,而new不一定...原创 2019-07-10 09:34:24 · 226 阅读 · 0 评论 -
关于左值引用和右值引用
左值引用和右值引用变量的两个属性,左值和右值。(左值既能出现在=左边也能够出现在=右边,而右值只能出现在=右边)左值是变量的地址,右值是变量存储的内容。变量本质即存储空间的名称,编译后变为对应地址。[左值是可以被修改的,右值仅能通过其成员函数被修改]C++11提出了右值引用的概念,实现了转移语句和精确传递 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率 ...原创 2019-04-07 19:14:09 · 320 阅读 · 0 评论 -
C++ 关于内联函数和宏替换
inline内联函数和宏替换1.内联函数只是一个建议(成员函数都是内联函数),而宏是通过文本替换从而一定能够实现的2.inline函数在编译阶段处理,而宏替换在预处理阶段3.宏替换不可调试,内联函数在少部分编译器可以处理4.宏替换容易起到意想不到的副作用5.inline函数允许读取私有数据,宏替换不行6.宏替换和inline函数都不能进行复杂循环操作(递归)...原创 2019-07-10 09:44:10 · 715 阅读 · 0 评论 -
真核硬货——STL中的sort()函数详解
sort()函数是STL中我们常用到的一个函数,之前好像在哪里模模糊糊的看到过是用快速排序进行排序的但底层究竟是怎样进行排序的,今天我们就来进行一个探索这里先给出一个结论:STL中的sort()函数的排序方法是以快速排序+堆排序+插入排序为组合的排序STL中所有的关系型容器都拥有自动排序功能(底层结构采用RB-tree),所以不需要用到这个sort算法首先sort()函数的主体躯干...原创 2018-05-07 17:42:57 · 2300 阅读 · 0 评论 -
C++四种转型 const_cast/dyamic_cast/reinterpret_cast/static_cast
C++提供了四种新式转型(C++-style casts) const_cast<T>通常被用来将对象的常量性转除。它也是唯一有此能力的C++转型操作符。 dyamic_cast<T>主要用来执行“安全向下转型”,也就是用来决定某对象是否归属继承体系中的某个类型。它是唯一无法由旧式语法执行的动作,也是唯一可能耗费重大运行成本的转型动作。 reint...原创 2019-04-08 15:02:40 · 654 阅读 · 0 评论 -
C++中的static关键字
static修饰变量是静态成员变量static类成员需要单独在类外进行单独的初始化静态成员变量: 静态成员变量不属于某个具体的对象,是类对象的共享 静态成员变量存储在全局数据区 静态成员变量在定义时分配存储空间,所以可以在没有对象时就操作 静态成员变量可用 <类名> :: <静态成员> / <...原创 2019-04-07 13:03:50 · 195 阅读 · 0 评论 -
C/C++语言 浅谈C/C++内存管理知识点
首先来展示下内存区域划分图这里就不介绍堆栈和数据代码区域了,相信大家都非常熟悉了,简单谈一下内存映射段内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信这里提一下大家总是分不清楚的sizeof和strlensizeof 和 strlen的区别 sizeof是一个运算符(部分操作时不添加不尾缀括号),其作...原创 2019-01-15 18:18:49 · 294 阅读 · 0 评论 -
C++ 虚拟继承
虚基类C++提供虚基类的方法,使得在继承间接共同基类时只保留一份成员虚拟继承的方式可以解决菱形继承的二义性和数据冗余的问题方式class 派生类名:virtual 继承方式 基类名虚基类并不是在声明基类时声明的,而是在声明派生类时,指定继承方式时声明的,因为一个基类可以生成一个派生类时作为虚基类,而在生成另一个派生类时不作为虚基类在最后的派生类中不仅要负责对其直接基类进行初...原创 2019-01-14 09:47:46 · 3710 阅读 · 0 评论 -
C++ 异常捕获知识点总结
首先来回顾一下在C语言中我们遇到类似异常的问题时候是如何处理的C语言处理错误的方式?1.assert直接终止2.使用errno返回错误码(可以在网上查找错误码库然后查看错误信息)3.C标准库setjmp/longjmp(这个我没用过,搬书的,好像现在不怎么用了)C++中异常的处理用到的三个关键字函数throw:程序抛出异常catch:捕获异常,一般拥有多个catc...原创 2019-01-14 08:55:17 · 402 阅读 · 0 评论 -
模拟实现shareptr 智能指针
shared_ptr的原理通过引用计数的方式来实现多个shared_ptr对象之间共享资源例如:公司晚上会通知,最后走的员工把灯关掉shared_ptr在其内部,给每个资源都维护了着一份计数,用来记录该份资源被几个对象共享 在对象被销毁时(也就是析构函数调用),就说明自己不使用该资源了,对象的引用计数减1 如果引用计数是0,就说明自己是最后一个使用该资源的对象,必须释放该资源 如...原创 2019-08-28 12:52:33 · 413 阅读 · 0 评论
分享