C++
咸鱼程序员
这个作者很懒,什么都没留下…
展开
-
Chrome扩展简介
声明:本篇文章借鉴地址:Chrome插件一、Chrome API简介严格来讲,我们正在说的东西应该叫Chrome扩展(Chrome Extension),Chrome插件是一个用Web技术开发、用来增强浏览器功能的软件,它其实就是一个由HTML、CSS、JS、图片等资源组成的一个.crx后缀的压缩包。搜狗浏览器有类似于Chrome扩展的一套,不同的是,生成的是.sext后缀的压缩包。二、Ch...原创 2019-12-15 19:10:14 · 417 阅读 · 0 评论 -
模拟实现shared_ptr
模拟实现shared_ptr template <class T>class sharedptr{public: sharedptr(T*ptr = NULL) :_ptr(ptr) , _pcount(NULL) { if (_ptr != NULL) { _pcount = new int(1); } } sharedptr(con...原创 2017-10-28 22:43:57 · 659 阅读 · 0 评论 -
利用sharedptr实现定制删除器
上次博客简单模拟实现了共享指针——sharedptr,这次我们利用sharedptr为主体实现定制删除器。所谓的定制删除器就是对应的动态内存开辟的方法对应相应的释放搭配,简单来说,就是要配对使用,比如 malloc和free,new和delete,new[]和delete[],fopen和fclose等。实现定制删除器有两种方法。第一种:将释放空间的方法封装成模板函数,利用函数指针实现对他...原创 2017-11-06 21:36:04 · 626 阅读 · 0 评论 -
shared_ptr产生的循环引用问题
shared_ptr是个不错的东西,可以帮助我们智能的管理资源,但是使用不当,也是会引发一系列的问题,今天就来看下shared_ptr在管理双向链表结点的时候,所产生的循环引用问题。并且看下如何修改它。 typedef int Datatype; struct ListNode{ shared_ptr<ListNode> _Ppre; shared_ptr<Li...原创 2017-11-11 21:14:32 · 603 阅读 · 0 评论 -
C++实现多态的原理
C++的多态是面向对象编程的核心,那么C++的多态是怎么来实现的?今天我们就来探讨一下。我们先来看下面程序和它的运行结果#include <iostream>using namespace std;class Father{public: void fun() { cout << "I am father!" << endl; }...原创 2018-04-15 22:21:48 · 11342 阅读 · 4 评论 -
单例模式的实现
1. 单例模式使用的场景在计算机中,有很多的设备比如说打印机,在打印一份文件时,只需要一个打印机工作,只要有一个打印机就可以完成这个文件的打印工作。相反的,如果系统中有多台打印机同时工作,会造成资源的浪费,也可能打出的文件是不完整的,此时就容易出现问题。相同的,在一个类中,我们只需要有一个实例来完成它的工作就行了,此时就需要单例模式。2. 单例模式实现的要求要实现单例模式完成三个要...原创 2018-04-24 21:59:48 · 234 阅读 · 0 评论 -
空间配置器测试报告
一. 空间配置器基本原理原创 2018-08-14 20:57:31 · 188 阅读 · 0 评论 -
C++string类的常用方法
在使用string类时,需要包含头文件 #include<string>,并且引入using std::string; using std::wstring; 或 using namespace std; 下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。 string和wstring的用法是一样的,以下只用string作介绍:s...原创 2018-09-01 13:41:14 · 31657 阅读 · 3 评论 -
智能指针剖析
C++中,动态内存的开辟需要用户自己管理,在使用完成之后,必须由用户自己来释放空间,当然,大部分程序员都会说,我肯定会记得释放的,然而,对于这个问题,我们还是防不胜防,一不小心就会造成内存泄露。在这样的情况下,我们为何不把开辟的空间交给智能指针来管理呢?这样即高效又不容易出问题。 C++中,智能指针是通过RAII((Resource Acquisition Is Init...原创 2017-10-28 21:35:16 · 202 阅读 · 0 评论 -
拷贝函数之类型萃取
经常在写模板顺序表的时候遇到一个问题,在拷贝元素的时候应该用for循环进行赋值,还是应用效率较高的memcpy.今天我们就来讨论一下。 首先看下它们各自的优缺点 (1) for 循环拷贝比较安全,容易想到并且实现;但是在顺序表元素太多时,时间复杂度高的情况下,for循环拷贝的效率比较低。 (2)memcpy是内存拷贝函数,任意内置类型的数据都可以拷贝,并且效率很高;但是memcpy的拷贝属于浅原创 2017-10-23 22:06:42 · 226 阅读 · 0 评论 -
一级,二级空间配置器
作为STL的六大组件之一——空间配置器,它的作用就是分配和管理空间,为容器包括算法提供生存空间。然而在我们使用STL中的利器在程序的舞台上大放光彩时,往往看不到它的存在,它总是站在舞 台的背后,为我们精彩的演出默默的付出。今天我们就来看下空间配置器。 1. 为什么需要空间配置器呢(1)通常申请的小块内存,容易造成内存碎片,最终造成空间的浪费。(2)当我们用malloc申请空间时,底层会...原创 2018-06-04 18:03:39 · 494 阅读 · 1 评论 -
迭代器失效总结
我们经常使用STL的容器,STL中的容器包括序列式容器,关联式容器。但是在使用某些容器的时候会出现迭代器失效的问题。1. 迭代器失效的容器类型通常数组,链表,树结构会出现迭代器失效。 即vector,list,map(set,mulitimap, mulitiset)。2. vector迭代器失效失效现象 在调用erase函数进行删除某一个元素或者迭代器的时候,当前位置及以后位...原创 2018-07-19 19:48:58 · 335 阅读 · 0 评论 -
智能指针总结
1. 智能指针的原理(1).智能指针不是通常意义下的指针,而是一个模板类,在对模板类实例化之后会产生类似于指针的行为。通过对象来管理资源。 (2)智能指针采用一种RAII(资源分配即初始化)机制,在构造函数中实现对资源的分配及初始化,在析构函数中实现对资源的析构及回收。2. 智能指针的分类C++ 中最开始是没有智能指针的,智能指针是在boost库(可以认为是C++的备胎库)中的。随着...原创 2018-07-22 17:23:18 · 181 阅读 · 0 评论 -
解析关键字static
大家都知道static的意思是静态的,静止的,同样的,不管在C语言还是C++中,static作为关键字的意思仍为静止的,静态的。现在我们就来仔细谈下static在c语言和c++中的用法。C语言static可修饰变量和函数。1.static在修饰变量时,又可分为修饰局部变量和全局变量。(1)在修饰局部变量的情况下,static可改变局部变量的存储位置,即将变量从堆栈区改存为静态区...原创 2017-10-02 14:48:00 · 150 阅读 · 0 评论 -
解析关键字inline
大家都知道,inline是C++中新增加的关键字,意思是内联,内置,常用于修饰函数。inline <函数返回类型> 函数名 (形参变量)为内置函数一. 编译器对内联函数的处理(1) 在实际情况下,编译器将它当作普通函数进行处理。(2) 编译时对函数进行替换,没有函数压栈过程,提升程序运行的效率。(3) inline是一种以空间换时间的做法,省去调用函数额开...原创 2017-10-02 15:38:17 · 258 阅读 · 0 评论 -
继承之乐趣
众所周知,C++的三个特性是封装,继承,多态。今天我们就来看第二个特性——继承。继承,从生活的角度来看,就是父亲和母亲生了个孩子,这个孩子肯定会遗传父亲或者母亲的一些特征,继承他们的一些的特点,再组合自己本身的特点,形成个性鲜明的自己。而C++的继承也是类似的,由父类生成子类,或者说由基类生成派生类(这个就是比较官方的叫法了)。同样,在继承的过程中,子类(派生类)会延续父类(基类)的一些特...原创 2017-10-07 22:37:05 · 170 阅读 · 0 评论 -
继承再剖析
上节我们初步认识了C++中的继承特性,了解了关于继承的基础知识和基本概念,今天我们就来更深层次的探究吧。我们知道,在类中,不仅有类的成员变量,更重要的是有类的对外接口——成员函数。在类的成员函数中,有六大成员函数至关重要,下面我们就来看在继承下基类和派生类的成员函数的情况。(1)派生类的默认成员函数在继承关系里面,若没有显示给出这六大成员函数,系统会合成默认的成员函数。(2...原创 2017-10-08 11:39:57 · 177 阅读 · 0 评论 -
浅谈多态
大家都知道C++的第三大特性是多态,而多态也是基于继承产生的。那么,什么是多态呢?下面就来简单介绍一下多态。(1)多态的概念多态,顾名思义,就是一种东西或者事情产生不同的形态,例如,人类这个大的物种,却分为男人和女人,而人们都是要上厕所的,但是上厕所的形式却是不同的,这就是多态。(2)多态的分类多态分为静态多态和动态多态。静态多态是在程序编译期间完成的,它实现有两种方式,一是函...原创 2017-10-12 21:12:58 · 191 阅读 · 0 评论 -
函数和类模板及泛型编程
模板是C++泛型编程的基础,一个模板就是创建类或者函数的蓝图或者说公式。一个类模板或函数模板可以给程序省去多余的代码,以实现代码的复用。一. 函数模板假如我们想写一个比较大小的函数,我们先完成一个整型的比较,又想完成浮点数等的比较,可能很多人会想到用函数重载。这是可行的,但是在重载函数的过程中,实现的代码是一致的,就是函数的参数列表不同而已,这样写出来的代码重复太多,代码的复用率低。我...原创 2018-04-24 20:42:44 · 274 阅读 · 0 评论