智能指针1.0 is a project mainly written in , based on the .一.使用普通的动态内存开辟存在的问题
我们在使用动态内存开辟一个空间的时候,需要释放掉这个空间,不然就容易出现内存泄漏。
比如下面的程序
情况一:
#include
模板的分离编译 is a project mainly written in , based on the .模板不支持分离编译
我们来分析一下模板为什么不支持分离编译呢,所谓的分离编译就是我们在编写程序的时候可能会出现如下的一种情况就是,(我下面就是举具体的例子了)
代码
//*****************template.h***********//
#include
动态内存管理和智能指针 2.0 -- shared_ptr is a project mainly written in , based on the .shared_ptr出现原因 通过第一章的学习,我们知道不管是auto_ptr合适scoped_ptr都是存在缺陷的,于是我们必须想出一个方法既能很好的管理我们的内存,而且在使用的时候,可以多个指针指向一个内存,这个时候就出现了shared_ptr。 shared_ptr的实现原理 shared_ptr使用的引用计数的浅拷贝的形...
简易git操作 -- 让你的格子绿起来 is a project mainly written in , based on the .创建github账号 浏览器输入网址,申请一个github账号,github申请网址,看到下面的图片内容,点击图中红色框里面的内容,用邮箱账号申请一个github账号,一定记住账号和密码 填写注册信息 点击之后跳转到下面的界面,然后依次填写下面框里面的内容,依次是用户名,注册邮箱和密码,最后点击第四个红色框里面的内容,...
计算机网络基础 1.0 -- 概述 is a project mainly written in , based on the .概念理解 报文:在网络中发送的数据块成为报文在发送报文之前,通常会把数组分组,每个组都有个包头和数据组成,包头中包含了诸如目标地址和源地址等重要信息,这样才保证了数据能够有目的的在网络中的传输主机是用户用来处理信息的,而路由器则是用来转发分组的,就是将报文传送到下一个路由器,知道找到目标地址链路:经常把网络中的单个通信线路称为链路我...
继承和多态 1.0 -- 继承概念(is-a、has-a,赋值兼容规则,隐藏重定义) is a project mainly written in , based on the .普通继承和访问权限 当一个继承没有虚拟继承或者是多重继承时,就是一个简单的继承的时候,这个时候就是一个普通的继承。 普通继承的内存空间是:子类的对象中,包含了父类的成员变量,同时也可以调用父类的成员函数(有些情况不可以,比如访问权限和重定义) 访问权限:比较继承方式和父类的成员修饰符 – 二者取权限低的那个。这里的访问权限,指的...
Effective C++ 1.0 -- 概述 is a project mainly written in , based on the .声明 对象声明,函数声明,类型声明,是告诉编译器某个东西的 名称和类型,但是略去了实现 细节,因为定义在其他的地方。 external int x; //对象(object)声明 std:size_t numDigits(int number) //函数 声明 class Widget; //类(...
设计1.0 -- iterator 和const_iterator底层的模拟实现 is a project mainly written in , based on the .本文概要:
本文主要是模拟实现STL中迭代器和const迭代器的,主要阐述的一个问题就是,为什么我们在设计迭代器的时候需要使用三个模板参数呢
在设计迭代器的时候,我们有下面的代码
#include
继承和多态 2.0 -- 继承的六个默认成员函数 is a project mainly written in , based on the .本文重要介绍普通继承中如何写派生类的六个默认成员函数,主要是针对在派生类中,如何调用基类的六个默认成员函数 需要说明的一点就是,如果子类中没有调用父类的函数时,系统会自动生成一个。 构造函数 子类中有父类的成员,子类首先需要调用父类的构造函数,然后调用自己的构造函数。如果没有调用父类的构造函数,系统会自动生成一个。 在构造函数...
STL模拟实现1.0 -- list和iterator模拟实现和简单分析 is a project mainly written in , based on the .引言 C ++ 标准模本库《STL》中有很多优秀的代码实现,不然怎么能叫做C++标准模板库呢,其中一个实现就是有一个容器,叫做list。所谓容器其实就是存储相同类型数据的一个存储集合,list的底层实现其实就是一个链表。 我们的普通数组在使用的时候可以定义一个指针指向一个节点,然后使指针 ++ 就可以访问下一个节点,我们想要我们的...
继承和多态 3.0 -- 菱形继承 is a project mainly written in , based on the .单继承和多继承 C++的继承方式是支持单继承和多继承的,首先看一下代码,分清单继承和多继承 单继承 class A { public:int _a; };class B :public A { public:int _b; };class C : public A { public:int _c; }; 类似于上面的方式...
二叉树 2.0 -- 非递归遍历 is a project mainly written in , based on the .二叉树递归遍历存在的问题 如果我们的二叉树只有左子树,而且树的高度还很深的时候,这个时候递归调用遍历的时候,栈帧空间开辟的较大,很可能造成栈溢出。但是我们一个程序中,为堆分配的空间要比栈大的多,这个时候我们可以实现一个二叉树遍历的非递归的实现形式,模拟栈帧调用的过程,自己模拟一个栈用于保存节点,然后实现遍历。 非递归实现树的遍历...
二叉树 1.0 -- 创建二叉树、遍历二叉树、二叉树常见问题求解 is a project mainly written in , based on the .树的结构主要是为了查找,这个主要是为了搜索,树的结构关注的不是增删查改 树 广义上面的树的结构我们不知道树的一个节点是有几个子节点的,所以这个时候我们需要定义的一种结构就是,一个节点的孩子是可以动态的增加的,这个时候我们就可以把一个一个的节点放置在vector中,这个时候某一个节点的孩子节点是可以动态的增加的 还有一种结构就是,...
数据库1.0 -- 数据库的基本操作 is a project mainly written in , based on the .安装数据库 安装数据库的时候我们需要安装三个软件,使用下面的命令,可能还会出现一些问题,关于数据库的安装,大家可以上网自行百度 yum install mysql yum install mysql-server yum install mysql-devel 我个人的理解大概是这个样子的,我们首先需要在自己的操作系统里面安装m...
每日一题 -- 11-1 is a project mainly written in , based on the .一天十题选择,一天一道编程,一天一个面试题,一个一个剑指offer 排序是必须要掌握的一个算法,非常的重要 题目描述 有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗? 输入描述:...
数据库2.0 -- 数据类型和数据表的基本操作 is a project mainly written in , based on the .mysql支持多种数据类型,一般可以分为,数值,日期时间和字符(串) 数值类型 日期和时间类型 字符串类型 创建数据表 我们首先应该明白的就是一个结构的问题,一个用户可以管理多个数据库,每个数据库下面是由多个表组成的,于是我们可以通过下面的方式创建一个数据表 create table runoob_tbl(ru...
《UNIX高级环境编程》 -- apue.h is a project mainly written in , based on the .在看《UNIX高级环境编程》这本书的时候,会遇到一个问题就是这个”apue.h”,这个是作者为了编写代码方便封装了一个库,我们可以使用下面的方式解决这个问题,让我们的代码可以像作者一样去使用,这样的话,我们就可以好好研究一下作者的代码了 首先进入到目录/usr/local/src/ 然后下面我们的压缩文件,这里是网址http://...
Leanote is a project mainly written in , based on the .https://github.com/leanote/leanote/wiki/Leanote-%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%89%88%E8%AF%A6%E7%BB%86%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B—-Mac-and-Linux 安装的网址 我们相当于是...
模板1.0 -- 模板基本原理 is a project mainly written in , based on the .为什么需要模板 我们经常有这样的一种使用的情形,就是我们可能需要设计一个函数,然后函数的参数可能是整形的,也可能是浮点型的,还有可能是其他的类型的,这个时候如果对于每一个类型都写一个函数,未免有点太复杂了 我们有以下几个方法来实现一个函数针对不同的类型都能够实现 法一:通过函数重载实现 比如我们想要写一个相加的函数,我们...
Git用户文档1 — git基础 is a project mainly written in , based on the .1. git基础 1.1 分布式 我们把远端仓库(云端的仓库)称为repo,repo必须有一个master分支,就是主分支。 repo除了有一个master分支,还有很多其他的分支,若干个分支之间存储的数据一版都是不一样的本地可以git clone下来repo的master分支,也可以git clone下来repo的其他的分支,因...