![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
「已注销」
往事已成空,还如一梦中
展开
-
Singleton 单件模式
概述( overview )面向对象很好的解决了抽象的问题,但是不可避免的要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不记。但是某些情况下面向对象带来的成本必须谨慎处理。动机( Motivation )在软件系统里面,经常一些特殊的类,必须保证它们所在的系统中只存在一个实例,才能确保他们的逻辑正确性,以及良好的效率。如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例。这应该由设计者来完成而不是使用者来完成。代码设计 (Code Design)在设计的时..原创 2020-05-21 14:07:23 · 127 阅读 · 0 评论 -
树和节点抽象类的实现c++
概述树状图是一种数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树;基础节点深度:对任意节点x,x节点的深度表示为根节点到x节点的路径长度。所以根节点深度为0,第二层节点深度为1,以此类推 节点高度:对任意节点x,叶子节点到x节点.原创 2020-05-19 11:38:24 · 671 阅读 · 0 评论 -
Stack 实现
概述栈是一种特殊的线性表,仅能在一端进行操作,栈顶(Top)允许操作的一端,栈底(Bottom),不允许操作的一端。抽象父类#ifndef STACK_H_#define STACK_H_#include "Object.h"namespace MYLIB{template <typename T>class Stack:public Object{public: virtual void push(const T&e) = 0; vir原创 2020-05-16 15:40:18 · 178 阅读 · 0 评论 -
SmartPointer 实现(c++)
概述:之前写的 SmartPointer 只能指向单个的变量,不能完全发挥指针的作用。通过技术机制(ref)标识堆内存堆内存被指向时:ref++ 指针被置空时:ref-- ref == 0 时:释放堆内存代码#ifndef SMARTPOINT_H_#define SMARTPOINT_H_#include "Pointer.h"#include "Exception.h"#include <cstdlib>namespace MYLIB{te原创 2020-05-14 10:00:04 · 280 阅读 · 0 评论 -
LinkList 实现( c++)
概述链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,有一系列结点(地址)组成,结点可动态的生成。结点包括两个部分:存储数据元素的数据域(内存空间), 存储指向下一个结点地址的指针域。相对于线性表顺序结构,操作复杂。代码实现#ifndef LINKLIST_H_#define LINKLIST_H_#include "List.h"#include "Object.h"#include "Exception.h"names.原创 2020-05-13 15:40:31 · 580 阅读 · 0 评论 -
设计模式工厂模式
概述对象创建模式:通过 “对象创建” 模式绕开 new,来避免对象创建 new 过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。他是接口抽象之后的第一步工作。典型的模式:Factory Method Abstract Factory Prototype Builder动机(Motivation)在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的...原创 2020-04-30 10:38:14 · 111 阅读 · 0 评论 -
混淆指针与数组导致的问题
概述在 c 语言中,一个数组变量可以理解成定义了一个指向数组的指针。大多数情况下这样的理解是没有问题的,但是还是要弄清楚他们的区别,否则会导致错误。本文会从因为混淆他们所导致的错误,揭示一个 C 语言鲜为人知的特点。问题实例// 在 test.c 文件定义一个全局的数组变量char g_name[] = {'h','l','j'};#include<stdio.h>...原创 2020-04-29 10:47:11 · 172 阅读 · 1 评论 -
浅谈 c++ 智能指针的实现
内存泄漏动态申请堆空间,用完后不归还 c++语言里面没有垃圾回收机制 指针无法控制所指堆的空间的生命周期在c++软件平台中的智能指针指针生命周期结束时主动释放堆空间 一片堆空间最多只能有一个智能指针标识 杜绝指针运算和指针比较智能指针的设计方案通过类模板描述指针的行为 能够定义不同类型的指针重载指针特征操作符(*和-&g...原创 2020-04-13 16:28:13 · 192 阅读 · 1 评论