C++学习笔记
记录我简单翻阅primer和STL源码剖析之后的一些感悟
总结得过于浅薄,烦请各位多指点!
zkccpro
这个作者很懒,什么都没留下…
展开
-
c++内存分配接口
c++内存分配接口很久之前的博客中我们谈到过c++中,new和delete的调用路径。但今天的介绍是更进一步的,希望读者可以了解到:我们自己也可以”重载“new、delete关键字的行为,为自定义的类设计独特的分配内存策略。首先,需要回顾一下c++内存分配的接口。图1 c++内存分配调用关系可以这样理解:当你设计一个类时,如果类中有重载operator new,编译器会优先调用你设计的operator new分配内存;如果类内没有重载operator new,则调用全局的operator new。原创 2022-05-09 17:36:56 · 252 阅读 · 0 评论 -
std::move与std::forward
std::move与std::forward这俩家伙显然都是c++11的产物无疑了。分别叫做:移动 和 完美转发。如果你写过模板函数,那么你十有八九会碰到std::forward;如果你经常使用智能指针(特别是unique),或者需要用移动来避免深拷、提高效率,那么你一定会碰到std::move。那么,下面我们来分别理解一下他俩啥原理、咋用的吧!1. std::move——移动首先需要记一个重要的结论:std::move什么也没做,只是营造一种”移动语义“。理解上面这句话非常重要,什么叫营造”移动语原创 2022-05-07 18:46:51 · 931 阅读 · 0 评论 -
c++的三种变量语义
c++的三种变量语义1. 值语义变量这。。。其实我们大一学c语言的时候都知道它是啥!但当时的自己可能并不理解值语义变量到底意味着啥???直到我反复研读primer、mordern c++。再结合自己写代码,慢慢才对这个抽象有了更深的认识。值语义变量,比如:int a=0;std::vector<int> arr;class A{ //some functions... Big* big_;//这是一个占用很大空间的类};A aa;看似这很简洁,就是不带引用和指针原创 2022-05-07 18:40:07 · 374 阅读 · 0 评论 -
c++11 类特殊成员函数生成规则
c++11 类特殊成员函数生成规则对c++实际工程开发时,设计一个类是很常见的操作。可是很多c++初学者往往咬不准编译器自动生成类特殊成员函数的具体规则。(比如说我哈哈哈)这样在自己设计类时,就会和编译器的行为产生冲突,达不到自己预期的设计效果。所以对于c++这样一门语言来说,我们必须彻底弄清楚编译器究竟如何自动生成类的特殊成员函数的?这里类的特殊成员函数(c++11)包括:构造函数(ctor)、析构函数(dtor)、拷贝构造函数(c-ctor)、重载拷贝赋值运算符(c=)、移动构造函数(m-ctor)原创 2022-05-07 18:36:21 · 232 阅读 · 0 评论 -
c++11 noexcept关键字作用
c++11 noexcept关键字作用c++2.0中,一条经典的规范是:尽可能地为一个函数加上noexcept声明,意味着程序员向编译器保证该函数不会发射异常。这条规范说的很对。那么,本文我们主要来探讨:为什么给函数加上noexcept会优化其性能?noexcept的常见用法?你可能会觉得自己也不确定这个函数是否会在运行时发射异常,那么到底什么时机应该为函数加上noexcept可以获得最佳优化?一、noexcept声明对函数性能的优化这个原因从直观上理解应该是:既然开发者确保此函数不会发射原创 2022-05-07 18:30:34 · 8669 阅读 · 0 评论 -
c++11/14 auto 与 decltype
auto 与 decltypec++11以后新增的这两个关键字可谓是“冤家路窄”。如果你是初学者,可能不能体会到为什么他俩有紧密的关系。你可能会说:auto就是根据根据给变量赋的值推出变量的类型;decltype就是可以推出来任意表达式的类型嘛。void fun(int,int);decltype(fun) f;//f的类型为:void(int,int)auto f1=f;//f1的类型为:void(*)(int,int),这里的函数会退化成指针,这是为啥呢?确实,作为初学者知道这些应该就够了,原创 2022-05-07 18:02:05 · 441 阅读 · 0 评论 -
c++11模板类型推导规则
模板类型推导规则当你准备迫切地想要了解本文的内容时,说明你对c++的了解已经比较深入了!本文将试图介绍c++11之后的模板类型推导机制是怎样的(加入右值引用概念),诚然,模板类型推导规则是了解GP(泛型编程,Generic Programming)的基础和前提,但只会这个还远远不够,泛型编程对我来说还是一个触不可及的范式;哪怕你不准备学习使用GP,模板类型推导规则仍然是一个合格的c++工程师必备的知识,模板在现代c++开发中还是很常用的!c++的函数/类模板为我们提供了这样一种语义:可以针对多种不定的类原创 2022-05-07 17:21:16 · 2097 阅读 · 1 评论 -
c++11 统一初始化
c++11 统一初始化一、c++98/03的初始化方式括号初始化int a(2);//ctor(尽管这个例子貌似不是很恰当)int b(a);//c-ctor列表初始化://c++98/03的列表初始化用于初始化数组int arr1[3] = { 1, 2, 3 };int arr2[] = { 1, 3, 2, 4 };//c++98/03的列表初始化用于初始化结构体变量(貌似不太常用)struct A{ int a; int b; int c;};原创 2022-05-06 21:46:47 · 558 阅读 · 0 评论 -
const与constexpr
const与constexprc++开发中,常量属性是避免不了要接触的。如果运用不好,函数或变量的常量属性会给你造成麻烦。其中,把const和constexpr这两个关键字弄混是一大原因。(当然还有其他原因引起困惑。。)本文我们试图解决以下2个问题:const与constexpr的区别?常函数的使用建议?一、const与constexpr的区别《c++ primer》中有对这个问题的详细介绍,但我一开始没怎么注意他嘛!那么我是怎么注意到这个问题的呢?实际开发中,经常会使用stl中的array容原创 2022-05-05 18:47:33 · 2986 阅读 · 0 评论 -
c++多态机制解析
c++多态机制解析提到”多态机制“这个概念,背过面经的同学都应该毫不犹豫地说出:**“多态分为静态多态和动态多态:静态多态机制依靠函数重载实现,动态多态依靠继承体系虚函数实现!”**这句话是面试的“金玉良言”,可一定要记住咯!那么我们分别从这两方面深入探讨一下其中的机制吧:“静态多态”的实现——name mangling(函数重载,overload)“动态多态”的实现——继承体系中的虚函数表(函数重写,override)一、“静态多态”的实现——name manglingname mangli原创 2022-04-28 20:50:16 · 1356 阅读 · 1 评论 -
c++类型内存分配规则
c++类型内存分配规则本文试图回答这样3个问题:c语言结构体内存对齐的规则?class、enum、union的作用和区别?VC等主流编译器究竟是如何管理一个类的分配空间的?一、c语言结构体内存对齐规则这是一个c语言类型内存分配最基本的问题了,我以前看到的一些说法经过自己的测试并不完全正确,学会了这个思路之后,以后再被问到这个问题就再也不怕了!首先看一段代码:class A{ char a;//1B double b;//8B int c;//4B};int m原创 2022-04-27 20:53:58 · 2015 阅读 · 0 评论 -
C++学习笔记——继承与多态(五):继承与多态体系中其他的工具与注意
终于,我们完成了对C++的简单了解学习!接下来我准备停更休息几个月,毕竟研一下科研任务比较多。几个月后,我准备陆续整理:操作系统、计算机网络、数据库等内容。感谢大家的支持(好吧,其实也没多少人哈哈哈哈),敬请期待!...原创 2021-01-21 20:24:40 · 124 阅读 · 0 评论 -
C++学习笔记——继承与多态(四):多继承与虚继承
C++学习笔记——继承与多态(四):多继承与虚继承明天预告:继承与多态体系中其他工具与注意事项原创 2021-01-21 20:12:32 · 113 阅读 · 0 评论 -
C++学习笔记——继承与多态(三):虚函数
C++学习笔记——继承与多态(三):虚函数明天预告:虚继承原创 2021-01-20 21:53:28 · 106 阅读 · 1 评论 -
C++学习笔记——继承与多态(二):多态的原理
C++学习笔记——继承与多态(二):多态的原理原创 2021-01-19 20:40:25 · 110 阅读 · 0 评论 -
C++学习笔记——继承与多态(一):多态的实现
C++学习笔记——继承与多态(一):多态的实现明天预告:多态的原理原创 2021-01-18 21:42:54 · 126 阅读 · 0 评论 -
C++学习笔记——对象模型浅析(五):其他用法
C++学习笔记——对象模型浅析(五):其他用法又写完了一个板块,我觉得对我自己而言坚持写博客还是有点提高的,是一种很好的学习方法!接下来就要进入C++最重要的一个板块了(相信对其他语言也是如此!):继承与多态。...原创 2021-01-17 17:47:04 · 625 阅读 · 1 评论 -
C++学习笔记——对象模型浅析(四):对象的拷贝控制
C++学习笔记——对象模型浅析(四):对象的拷贝控制原创 2021-01-16 21:25:06 · 69 阅读 · 0 评论 -
C++学习笔记——对象模型浅析(三):对象的构造与析构
C++学习笔记——对象模型浅析(三):对象的构造与析构明天预告:对像的拷贝控制原创 2021-01-14 20:56:12 · 69 阅读 · 0 评论 -
C++学习笔记——对象模型浅析(二):类的模型
C++学习笔记——对象模型浅析(二):类的模型明天预告:对象的构造原创 2021-01-10 21:19:02 · 112 阅读 · 0 评论 -
C++学习笔记——对象模型浅析(一):概述
C++学习笔记——对象模型浅析(一):概述明天预告:C++类的模型原创 2021-01-09 21:02:18 · 123 阅读 · 0 评论 -
C++学习笔记——STL标准库(十三):配接器
C++学习笔记——STL标准库(十三):配接器STL部分终于结束了!明天写啥我再想想吧。。。原创 2021-01-08 20:59:57 · 154 阅读 · 0 评论 -
C++学习笔记——STL标准库(十二):仿函数
C++学习笔记——STL标准库(十二):仿函数明天预告:适配器adapter原创 2021-01-07 20:27:07 · 149 阅读 · 1 评论 -
C++学习笔记——STL标准库(十一):泛型算法举例——sort
C++学习笔记——STL标准库(十一):泛型算法举例——sort明天预告:仿函数functor原创 2021-01-06 22:13:47 · 114 阅读 · 0 评论 -
C++学习笔记——STL标准库(十):map&set
C++学习笔记——STL标准库(十):map&set明天预告:泛型算法举例——sort原创 2021-01-05 21:07:28 · 98 阅读 · 0 评论 -
C++学习笔记——STL标准库(九):搜索树
C++学习笔记——STL标准库(九):搜索树明天预告:set,map原创 2021-01-04 20:36:59 · 561 阅读 · 0 评论 -
C++学习笔记——STL标准库(八):hashtable
C++学习笔记——STL标准库(八)明天预告:红黑树原创 2021-01-03 20:05:52 · 204 阅读 · 0 评论 -
C++学习笔记——STL标准库(七):配置器alloc
C++学习笔记——STL标准库(六):配置器alloc明天预告:关联容器——hashtable原创 2021-01-02 21:23:25 · 118 阅读 · 0 评论 -
C++学习笔记——STL标准库(六):STL迭代器
C++学习笔记——STL标准库(五)明天预告:STL配置器——alloc原创 2021-01-01 21:31:42 · 103 阅读 · 0 评论 -
C++学习笔记——STL标准库(五):优先级队列
C++学习笔记——STL标准库(五)明天预告——迭代器(itorator)原创 2020-12-31 18:07:08 · 121 阅读 · 0 评论 -
C++学习笔记——STL标准库(四):deque
C++学习笔记——STL标准库(四)明天预告——优先级队列 priority_queue原创 2020-12-30 22:00:22 · 80 阅读 · 0 评论 -
C++学习笔记——STL标准库(三):list
C++学习笔记——STL标准库(三)明天预告:顺序容器——deque原创 2020-12-29 22:05:25 · 102 阅读 · 0 评论 -
C++学习笔记——STL标准库(二):array与vector
C++学习笔记——STL标准库(二)明天预告:顺序容器——list原创 2020-12-28 22:39:23 · 106 阅读 · 0 评论 -
C++学习笔记——STL标准库(一):STL概览
C++学习笔记——STL标准库(一)原创 2020-12-27 22:10:36 · 162 阅读 · 0 评论 -
C++学习笔记——函数专题(一)
C++学习笔记——函数专题(一)原创 2020-12-27 22:09:02 · 101 阅读 · 0 评论 -
C++学习笔记——C++内存管理
C++内存管理原创 2020-12-26 21:02:35 · 142 阅读 · 0 评论 -
C++学习笔记——静态与常量(二)
C++学习笔记——静态与常量(二)较(一)相比补充了C++11新增的四种类型转换简要总结原创 2020-12-24 21:54:52 · 109 阅读 · 0 评论 -
C++笔记——C++基本思想与实现(一)
C++笔记——C++基本思想与实现(一)原创 2020-12-24 21:51:34 · 259 阅读 · 0 评论 -
C++学习笔记——静态与常量(一)
C++学习笔记——静态与常量(一)原创 2020-12-23 20:39:47 · 155 阅读 · 0 评论 -
C++学习笔记——指针与引用(一)
C++学习笔记——指针与引用(一)原创 2020-12-22 21:21:59 · 190 阅读 · 0 评论