
cpp
文章平均质量分 65
ptgood
这个作者很懒,什么都没留下…
展开
-
cpp单例模式的实现
单例模式的意义保证全局只会创建一个对象,比如 日志模块全局只有一个,windows的任务管理器等,这样可以避免频繁的创建销毁对象,还可以避免对共享资源的多重占用,具体例子和好处坏处看参考资料[9],不赘述几种考虑几个要考虑的问题:懒加载;;线程安全生存周期的考虑;;反序列化;;反射单例;;克隆单例首先是一个唯一性,保证全部成员只能访问到一个共同的对象为了防止对象被创建多次,要把构造函数设为private,以防止被他人调用重复建立,而自己单独实现一个接口用来获取实例(可以把构造函数当作这个原创 2020-08-17 12:52:04 · 1765 阅读 · 0 评论 -
智能指针的实现
前言学习自用,有错麻烦提一下正文智能指针,即把指针封装为类,对外要保留指针原本的功能的接口比如解引用等,还要利用引用计数和RAII来控制对象的生命周期,之所以不手动控制一个是为了编码的方便,能在作用域到期后自动析构,另一个就是为了异常安全性,如果发生了异常,可以自动调用析构函数来释放内存引用计数控制生命周期需要根据引用计数,当引用计数为0时说明可以销毁,引用计数是针对一个对象来说的.不过计数是在智能指针中来实现的一个要注意的点是,引用计数要是多个指向同一对象的智能指针共享的,比如原创 2020-08-12 11:19:38 · 394 阅读 · 0 评论 -
cpp的static的实现
前言学习自用,有错麻烦提一下正文static成员变量static修饰的值会在静态区分配空间,是在编译时期就分配了空间,(那么在没运行时就占用了可执行文件的大小吧),可以把static与全局变量作比较,实际上的实现也是像全局变量一样额外放一个地方,全局变量放在全局区,静态变量放在静态区局区,不同之处就在于static的类成员是指定只能类来访问的,相当于static成员变量做了访问限制的全局变量static成员函数不同于static的成员变量,static修饰的成员函数在代码区分配内原创 2020-08-11 11:36:05 · 870 阅读 · 0 评论 -
cpp11的几种cast浅析
const_cast提供const与非const的转换,且只能用在引用和指针上,如const string s = "Inception"; string& p = const_cast <string&> (s); string* ps = const_cast <string*> (&s);注意const转非const,只是为了名义上的const转换,比如要函数传参把const对象传进非const属性参数里,但是实际上转换完的也是不可以修原创 2020-08-10 10:35:15 · 757 阅读 · 0 评论 -
std::enable_shared_from_this 有什么意义
假如有一个stock和stockFactory类,代表股票和股票池,stockFactory里输入股票代码查询是否有stock,有则返回,没则创建并返回stock,这里用一个std::map来建立映射;而股票如果用完了要自己析构,要顺便把stockFactory里map的内容也析构掉;因为Stock采用shared_ptr来管理的,要让Stock析构的时候顺便调用stockFactory::delete(Stock),这样要在Stock的析构函数里调用,这样代码难以实现,还有另一种办法,设置shar原创 2020-08-02 16:58:50 · 389 阅读 · 0 评论 -
std::any的实现
前言学习自用,帮助理解,有错麻烦提一下,代码没跑过,想着知道大概思想就好..问题 为什么不用类型推断,类型推断又是什么TODO 类型擦除怎么实现的,用类的继承来实现的,为什么类的继承可以实现? 基类是不含模板参数的,派生类中才有模板参数,这个模板参数类型正是赋值的类型,在赋值时,将创建的派生类对象赋值给基类指针,基类的派生类中携带了数据类型,基类只是原始数据的一个占位符,通过多态,它擦除了原始数据类型,因此,任何数据类型都可以赋值给他,从而实现了能存放所有类型数据的目标 正文原创 2020-08-01 22:27:55 · 1749 阅读 · 1 评论 -
STL重要知识
介绍下STL:STL是一个standard templeate library封装了常用的数据结构和算法,用了泛型来包装方便使用,分为六大组件,我们直接使用的是容器,迭代器和算法,迭代器分为随即迭代器,双向迭代器两种,随机迭代器会面临一个失效的问题,在使用他们的时候要一些情况要接收返回值来防止迭代器失效,容器常用的vector,它的allocator很有意思,是包括两层分配器,第二级用一个内存池来减少内存碎片,其他常用的map用红黑树来实现,常用的算法有sort.内部使用的是一个内省算法,就是多种算原创 2020-07-18 22:23:47 · 484 阅读 · 0 评论 -
深度探索cpp对象模型的好博客
http%3A//www.roading.org/archives/原创 2020-07-06 13:18:05 · 136 阅读 · 0 评论 -
cpp的new实现
前言学习自用,目前这篇文章理解还挺初级的,等以后再改善把文末的参考资料都是好文,[1]为malloc(0),面试常问,[2]为C++placement new相关正文placement new作用:在指定内存里进行对象构造placement new应用场景: cpp里new的实现 如果有不断相同数据结构创建并被销毁,可以用placement new来代替new,这样操作系统就不会每次去找另外的空间而造成内存碎片了 空间申请有operator new和malloc两种操原创 2020-06-24 11:21:38 · 2285 阅读 · 0 评论 -
cpp笔试的输入输出
笔试的时候碰到奇奇怪怪的输入标准,发现自己连输入都没掌握..死在这个上..连续输入有限个数字,中间空格隔开,如2 5 4std::cin>>a>>b;一行连续输入无线个数字,中间空格隔开,如2 4 4 2 4std::cin>>num; chara= getchar() if(a=='\n')do_next();解析std::cin>>num中,>>会吸收空格或者换行符'\n',而getchar()...原创 2020-05-26 14:18:44 · 328 阅读 · 0 评论