设计模式--装饰模式(C++实现) #include<iostream>#include<string>// abstract Classclass shape{public: shape() {} virtual ~shape() {} virtual void decorateMethod() = 0;};//Concrate Classclass circle :public shape{public: circle(std::string iName):shape(),sName.
设计模式--外观模式(c++实现) /********FacedDP Test**********/#include<iostream>//Abstract Interfaceclass shape{public: shape() = default; virtual ~shape() = default; virtual void Draw() = 0;//the Interface Method};//Concrete Classclass Circle :public shape{public.
设计模式--适配器模式(C++实现) 定义:适配器模式是一种结构型设计模式,他主要是将一个类接口转换成客户端希望的另一个类接口。该设计模式较为简单,但是却很常用。#include<iostream>#include<string>using namespace std;class InterfaceA{public: virtual void FuncA() { cout << "InterFaceA Method: FuncA" << endl; }};cla
设计模式--原型模式(c++实现) 原型模式定义:用原型实例通过拷贝方式创建新的对象,是一种创建型设计模式(至此,五种创建型设计模式就全部介绍完了(*^__^*) )//原型模式示例代码#include <iostream>using namespace std;class Prototype{public: Prototype() = default; ~Prototype() = default; virtual Prototype* clone() = 0;};class Concre.
设计模式--建造者模式(C++实现) 创建型设计模式共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。建造者模式:适用于复杂对象的构建,可以将其一步一步的构造出来,能够更精细的控制构建过程(每一步都可以控制)。//建造者模式示例代码#include<iostream>using namespace std;class Builder{public: virtual void buildHead() {}; virtual void buildBody() {}; virtual voi
设计模式--策略模式&模板模式(C++实现) 1.策略模式:在开发过程中,常常遇见实现某一功能有多种算法策略的情况,可以根据不同的业务场景选择不用的策略。策略模式就是将每种算法封装为一个策略,各个策略之间可以相互替换。//策略模式示例代码#include<iostream>using namespace std;//策略类(抽象类)class Strategy{public: Strategy() = default; ~Strategy() = default; virtual void StrategyFu
设计模式--单例模式(c++实现) 定义:顾名思义,确保一个类在任何情况下都只有一个实例。#include<iostream>using namespace std;class SingletonDP{public: static SingletonDP* GetInstance();private: SingletonDP() { cout << "Constructor" << endl; };//构造函数私有 static SingletonDP* pSingle
设计模式 -- 工厂模式(C++实现) 前言:工厂模式是创建型设计模式,提供一种创建对象的方式。本文主要介绍简单工厂模式和工厂方法模式。简单工厂模式该种模式由工厂对象决定创建哪一种产品类的实例,该工厂类可以直接被外部调用。//简单工厂模式代码示例#include<iostream>#include<string>using namespace std;//产品抽象类class Animal{public: virtual void AnimalName() = 0;};//具体产品类1
const char*p 、char * const p、char const *p const char * p 和char const *p 表达的含义一致,即指向常量的指针(是个指针)从上面的程序中可以看到,常量指针指向字符数组的第一个元素,为‘h’,随后,我们将字符数组的第一个元素更改为'K',然后输出*p可以看出此时常量指针仍然指向数组第一个元素,此时第一个元素为K。从上面的程序中可以看出,当我们让常量指针指向另一个值时,会出现报错:不能给常指针量复制。...
指针和引用的区别 1.指针:指针是一个变量,该变量存储的是一个地址,指向内存的一个存储单元。 引用:与原来的变量实质是同一个东西,只不过是变量的另一个别名。 3.指针可以有多级,即可以有指针的指针,int **p; 引用只能是一级,即不可以有引用的引用4.指针的值可以为NULL(空),但是引用在定义是必须初始化,不能为空。5.指针的值在初始化后可以改变,即可以指向其他存储单元,...
HTTP get和post声明:图片转载自:http://www.w3school.com.cn/tags/html_ref_httpmethods.asp注意:对get有2k的长度限制,一般是浏览器对其进行的限制。 https和http https是http+ssl 是http的安全版 是加密传输,端口号是443http超文本传输,是明文传输,端口号是80TCP/IP...
c++中的编译、链接和执行 1.编译与链接的区别:预处理:处理宏定义指令#define 、头文件#include等#include<filename> ,尖括号表示系统提供的头文件,直接去系统目录查找;#include“animal.h”,双引号表示自己编写的头文件,先在工程目录里面查找,找不到再到系统目录查找。预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义...
虚函数 1.什么是虚函数 定义:在某基类中声明为 virtual并在一个或多个派生类中被重新定义的成员函数。#include<iostream>using namespace std;class A{pubulic: virtual void Printfun() {cout<<"This is class A"<<end...
c++内存分配 0.写在前面在c++编程时,常常会涉及到内存分配的问题,如动态创建数组。令人头大!如果内存分配不当则会产生堆栈溢出、缓冲区溢出、野指针等使整个程序崩溃…… 1.内存分配的几种形式BBS(Block Start by Symbol) :存放未初始化的全局或静态变量,静态内存分配,结束后系统自动释放资源; 数据段:存放已经初始化的全局和静态变量,也是静态内存分配; 代码段:存放...
数组与指针的区别 通常,我们可能习惯性的认为数组名就是指针,其实不然。数组名在大多数的情况下隐式转换成指针。当遇到如下几种情况是时,两者之间不能混用:(已知定义数组int a[2])1.sizeof(a),此时a就是int数组类型,不再隐式转换成指针。2.&a ,此时表示取数组a中元素地址,不是指针的指针!举一个常见的例子:#include<iostream>using namespace s...
常见排序算法--合并排序 思路:将一个无序的序列分组,直至分为每两个元素一组(如果有单个元素剩余,则可以剩余的单个元素自己一组),小组内排序,然后合并成一个有序的序列。例子: 排序过程如图所示:图片摘选自:https://blog.csdn.net/ZY_cat/article/details/78404257程序实现:#include <iostream> using namespace std;voi...
常见排序算法--希尔(shell)排序 原理:一般,讲序列分成n/2组,然后进行排序,后再分为(n/2)/2组,再进行排序,以此类推。例子:63 92 27 36 45 71 58 7分组1次:63 92 27 36 45 71 58 7 --》排序:45 71 27 7 63 92 58 36分组2次:45 71 27 7 63 92 58 36 --》排序:27 7 45 36 58 71 63 92最...
常见排序算法--快速排序 原理:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。以一个数组...
常见排序算法--冒泡排序 原理:从数组第一个元素开始,与他后一位元素相比较,如果比后面元素大,就交换两者位置,把最大的放在最后一位,然后第二轮比较0-n-1个元素,把最大的放在倒数第二个位置,以此类推。例子:数组{32,10,55,97,68,4}第一次排序:10 32 55 68 4 97第二次排序:10 32 55 4 68 97第三次排序:10 32 4 55 68 97第四次排序:10 4 32 55 68 97...
常见排序算法--插入排序 原理:先处理第一个元素,然后处理第二个元素,使其插入到合适的位置,使前面的序列有序,然后处理第三个元素,使其插入前两个元素中合适位置使其有序,以此类推,使其有序。举例:数组[32 10 55 97 68 4]第一次排序 32 [10 55 97 68 4]第二次排序: 10 32[55 97 68 4]第三次排序: 10 32 55 [97 68 4]第四次排序: 10 32 55 97 [68...