C++基础
文章平均质量分 53
总结c++基础,梳理c++的知识地图
~小泽~
这个作者很懒,什么都没留下…
展开
-
c++基础 - enable_shared_from_this 解决什么问题
文章目录enable_shared_from_this 解决什么问题场景enable_shared_from_this 解决什么问题需要在内部使用this的情况,例如回调参数是this, 可以shared_from_this原理是创建一个weak_ptr, 调用shared_from_this 的时候,返回以weak_ptr为参数的构造shared_ptr 就可以和 weak_ptr 共享sp_count_base 指针,这样所有从shared_from_this返回的ptr 都处于共享状态1、创建原创 2021-10-27 11:48:53 · 620 阅读 · 0 评论 -
c++11 总结-2
文章目录4、 c++11 解决内存泄露问题4.1 shared_ptr4.2 weak_ptr4.3 unique_ptrenable_shared_from_this4.4 通过智能指针管理第三方库分配的内存其他细节make_shared5、c++11 让多线程开发变得简单5.1 线程5.4 互斥锁、条件变量、原子变量5.5 call_once/once_flag5.6 异步操作6、c++11 便利工具6.1 chrono 库6.2 数值类型和字符串的相互转换6.3 宽窄字符转换7、 其他特性7.1 委托原创 2021-10-27 11:46:55 · 441 阅读 · 0 评论 -
c++11 总结-1
文章目录1、让程序更简洁1.1、类型推导1.2、模板细节的改进1.3、列表初始化1.4 基于范围的for 循环1.5 std::funtion 和 bind1.6 lambda 表达式tuple2、改进性能2.1 右值引用move & forward2.4 emplace_back 减少内存拷贝和移2.5 无序容器3、消除重复,提高代码质量3.1 type_traits 类型萃取3.2 可变模板参数函数模板展开类可变模板展开其他3.3 可变模板参数和type_taits 的综合应用1、optiona原创 2021-10-27 11:42:28 · 278 阅读 · 0 评论 -
c++11 lambda
lambda 表达式的应用场景1、延迟调用2、链式调用3、声明式编程,减少函数定义。链式调用1、递归,先执行最开始的代码。套娃,没添加一个then 就套一层。执行过程是,先执行m_fun, 然后在执行fun;2、class Task<R(Args…)> ,类型推导,将类型拆分成2部分3、R run(Args&&… args) ,加万能引用4、m_fun(std::forward(args)…); 使用forward 进行完美转发/** * lambda 的de原创 2021-08-30 16:53:45 · 198 阅读 · 0 评论 -
std::forward 实现
背景在开具体实现前,我们先搞明白为什么需要forward 。/** * test forward */template<class T>void print(T &) {}template<class T>void print(T &&) {}template <class T>void test_forward(T && a) { print(a); // a 是左值,右值引用 pr原创 2021-08-28 23:16:43 · 1309 阅读 · 0 评论 -
c++11 学习笔记 -可变参数模板
可变参数模板代码实践,发给大家共勉!/** * 可变模板参数 * * 田志泽 Tian zhize * [email protected] * 背景 * 1、c++11 之前只能是固定的模板参数 * * 模板函数 可变模板参数展示 * 递归展开 * 1、常见的方式 * 2、需要有同名的终止函数 * * 逗号+初始化列表展开 * 1、逗号列表,(exp,exp2) 会执行所有的表达是,但是最后等于exp2 * 2、可以in原创 2021-08-28 22:04:01 · 90 阅读 · 0 评论 -
emplace_back 和在vector 中遇到的坑
简单介绍1、emplace_back 解决了 push_back 在需要进行一次拷贝构造的问题,直接在对应的内存进行构造,避免了拷贝构造。2、placement new直接截取最后一段构造的代码,大家可以看到一种语法::new(_p) _T(),这就是 placement new 。在指定的位置进行new。这样就可以在已经申请好的内存上构造。减少了拷贝。static _Require<__and_<__not_<__has_construct<_Tp, _Args...&g原创 2021-08-27 21:10:10 · 1663 阅读 · 0 评论 -
c++ 插件框架
一、插件化框架目标高可用插件架构的目标(是什么样子,具备什么样的能力)1、微内核+插件架构,稳定的内核,易扩展的插件2、热插拔,灵活的插件配置,升级更新量小3、接口编程,模块解耦,低耦合高内聚4、稳定性,错误和异常处理恢复,健康状态监测5、简单易用,搭建成本低6、支持单元测试,可调试给业务带来的好处(目的)1、更加灵活的业务功能配置2、升级更新灵活,支持功能级的升级。不在需要跟版发版。3、提高开发效率,丰富强大组件库,调试方便,模块解耦独立开发4、提高稳.原创 2021-03-31 09:25:49 · 2794 阅读 · 1 评论 -
C++ 类型擦除
为什么要类型擦除在使用容器的时候,std::vector<int> ,存储的类似是int,我们都支持vector是一个模板类,可以支持不同的类型。但是如果一个vector只能支持一种类型。但是有一个需求需要在一个容器内存储不同的类型,例如:int , double 那容器肯定是没有办法支持的。如何解决:那只有一个办法将int 和 double 转换成一个类型,例如这个类型就叫做Any。这个Any类型可以在转换int,和double 。此时我们vector就可以存储所有的类型.原创 2021-03-24 20:18:48 · 1144 阅读 · 0 评论 -
C++11 IOC容器
什么是IOC控制反转(Inversion of Control,缩写为IoC),不是什么技术,而是一种设计思想。控制反转的意思是说本来流程控制是需要程序员来处理,变成了程序员无需管理而是由框架处理,而程序员只是仅仅按照框架的扩展点,开发与业务相关的处理逻辑就可以,降低了开发成本。IOC容器是什么IOC容器是java的帮助创建对象的框架,可以将创建过程交给ioc容器,无需对过程细节进行控制,外界通过需求灵活的配置这种机制创建对象。实现IOC的核心是有以下几个方面1、创建对象交给容器实现,应用不原创 2021-01-14 10:06:10 · 1082 阅读 · 0 评论 -
c++类和对象特性 - 友元
今天介绍下友元,首先介绍为什么需要友元,友元解决什么样的问题。我们知道面向对象特性中封装是将内部细节进行封装,包括内部的私有变量,如果外部想访问私有变量,就需要提供公有的函数进行操作。解决的问题:在外部函数或者是类中,想访问某个类A的内部成员变量或者函数,但是类A又不想提供额外的public的方法。就可以将外部函数和类做自己的友元。这样就可以访问A的内部私有变量了。支持友元的原因:如果不支持友元,可能在c语言的开发者看来是非常麻烦的事情,为了让c语言的开发者更加容易的迁移过来才支持友元。友元破坏原创 2021-01-10 15:49:19 · 152 阅读 · 0 评论 -
C++ 知识图谱
在学习多年的c++后发现很多知识点非常零碎不够系统,借鉴看过的《c++ primer》做一下总结,方便自己学习。这个专栏的定位是具备c++基础的开发工程师,系统的总结c++知识,避免出现知识空白。并不会像书中那样非常详细的介绍每个特性和知识点。而只会是对知识的总结和数量。下面文章的大纲。1、c++基础1、变量和基本类型2、字符串、数组3、表达式4、语句5、函数6、类2、c++标准库1、IO库2、顺序容器3、泛型算法4、关联容器5、动态内存3、类设计原创 2021-01-10 14:30:33 · 782 阅读 · 0 评论