zhang_zhilai
码龄7年
关注
提问 私信
  • 博客:31,344
    31,344
    总访问量
  • 22
    原创
  • 1,088,969
    排名
  • 12
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:辽宁省
  • 加入CSDN时间: 2018-04-27
博客简介:

zhang_zhilai的博客

查看详细资料
个人成就
  • 获得42次点赞
  • 内容获得2次评论
  • 获得199次收藏
创作历程
  • 8篇
    2021年
  • 19篇
    2018年
成就勋章
TA的专栏
  • C++
    1篇
  • 设计模式
    2篇
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

设计模式--装饰模式(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.
原创
发布博客 2021.10.24 ·
171 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

设计模式--外观模式(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.
原创
发布博客 2021.10.24 ·
136 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式--适配器模式(C++实现)

定义:适配器模式是一种结构型设计模式,他主要是将一个类接口转换成客户端希望的另一个类接口。该设计模式较为简单,但是却很常用。#include<iostream>#include<string>using namespace std;class InterfaceA{public: virtual void FuncA() { cout << "InterFaceA Method: FuncA" << endl; }};cla
原创
发布博客 2021.10.11 ·
476 阅读 ·
1 点赞 ·
1 评论 ·
1 收藏

设计模式--原型模式(c++实现)

原型模式定义:用原型实例通过拷贝方式创建新的对象,是一种创建型设计模式(至此,五种创建型设计模式就全部介绍完了(*^__^*) )//原型模式示例代码#include <iostream>using namespace std;class Prototype{public: Prototype() = default; ~Prototype() = default; virtual Prototype* clone() = 0;};class Concre.
原创
发布博客 2021.09.13 ·
195 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式--建造者模式(C++实现)

创建型设计模式共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。建造者模式:适用于复杂对象的构建,可以将其一步一步的构造出来,能够更精细的控制构建过程(每一步都可以控制)。//建造者模式示例代码#include<iostream>using namespace std;class Builder{public: virtual void buildHead() {}; virtual void buildBody() {}; virtual voi
原创
发布博客 2021.09.12 ·
430 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

设计模式--策略模式&模板模式(C++实现)

1.策略模式:在开发过程中,常常遇见实现某一功能有多种算法策略的情况,可以根据不同的业务场景选择不用的策略。策略模式就是将每种算法封装为一个策略,各个策略之间可以相互替换。//策略模式示例代码#include<iostream>using namespace std;//策略类(抽象类)class Strategy{public: Strategy() = default; ~Strategy() = default; virtual void StrategyFu
原创
发布博客 2021.09.08 ·
346 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

设计模式--单例模式(c++实现)

定义:顾名思义,确保一个类在任何情况下都只有一个实例。#include<iostream>using namespace std;class SingletonDP{public: static SingletonDP* GetInstance();private: SingletonDP() { cout << "Constructor" << endl; };//构造函数私有 static SingletonDP* pSingle
原创
发布博客 2021.09.07 ·
118 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式 -- 工厂模式(C++实现)

前言:工厂模式是创建型设计模式,提供一种创建对象的方式。本文主要介绍简单工厂模式和工厂方法模式。简单工厂模式该种模式由工厂对象决定创建哪一种产品类的实例,该工厂类可以直接被外部调用。//简单工厂模式代码示例#include<iostream>#include<string>using namespace std;//产品抽象类class Animal{public: virtual void AnimalName() = 0;};//具体产品类1
原创
发布博客 2021.09.06 ·
784 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

const char*p 、char * const p、char const *p

const char * p 和char const *p 表达的含义一致,即指向常量的指针(是个指针)从上面的程序中可以看到,常量指针指向字符数组的第一个元素,为‘h’,随后,我们将字符数组的第一个元素更改为'K',然后输出*p可以看出此时常量指针仍然指向数组第一个元素,此时第一个元素为K。从上面的程序中可以看出,当我们让常量指针指向另一个值时,会出现报错:不能给常指针量复制。...
原创
发布博客 2018.10.09 ·
1806 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

指针和引用的区别

1.指针:指针是一个变量,该变量存储的是一个地址,指向内存的一个存储单元。   引用:与原来的变量实质是同一个东西,只不过是变量的另一个别名。 3.指针可以有多级,即可以有指针的指针,int **p;    引用只能是一级,即不可以有引用的引用4.指针的值可以为NULL(空),但是引用在定义是必须初始化,不能为空。5.指针的值在初始化后可以改变,即可以指向其他存储单元,...
原创
发布博客 2018.09.28 ·
286 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

HTTP

get和post声明:图片转载自:http://www.w3school.com.cn/tags/html_ref_httpmethods.asp注意:对get有2k的长度限制,一般是浏览器对其进行的限制。 https和http https是http+ssl 是http的安全版 是加密传输,端口号是443http超文本传输,是明文传输,端口号是80TCP/IP...
转载
发布博客 2018.09.18 ·
171 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

c++中的编译、链接和执行

1.编译与链接的区别:预处理:处理宏定义指令#define 、头文件#include等#include&lt;filename&gt; ,尖括号表示系统提供的头文件,直接去系统目录查找;#include“animal.h”,双引号表示自己编写的头文件,先在工程目录里面查找,找不到再到系统目录查找。预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义...
原创
发布博客 2018.09.03 ·
1724 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

虚函数

1.什么是虚函数 定义:在某基类中声明为 virtual并在一个或多个派生类中被重新定义的成员函数。#include&lt;iostream&gt;using namespace std;class A{pubulic: virtual void Printfun() {cout&lt;&lt;"This is class A"&lt;&lt;end...
原创
发布博客 2018.08.28 ·
549 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

c++内存分配

0.写在前面在c++编程时,常常会涉及到内存分配的问题,如动态创建数组。令人头大!如果内存分配不当则会产生堆栈溢出、缓冲区溢出、野指针等使整个程序崩溃…… 1.内存分配的几种形式BBS(Block Start by Symbol) :存放未初始化的全局或静态变量,静态内存分配,结束后系统自动释放资源; 数据段:存放已经初始化的全局和静态变量,也是静态内存分配; 代码段:存放...
原创
发布博客 2018.08.26 ·
299 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数组与指针的区别

通常,我们可能习惯性的认为数组名就是指针,其实不然。数组名在大多数的情况下隐式转换成指针。当遇到如下几种情况是时,两者之间不能混用:(已知定义数组int a[2])1.sizeof(a),此时a就是int数组类型,不再隐式转换成指针。2.&amp;a ,此时表示取数组a中元素地址,不是指针的指针!举一个常见的例子:#include&lt;iostream&gt;using namespace s...
原创
发布博客 2018.06.25 ·
239 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

常见排序算法--合并排序

思路:将一个无序的序列分组,直至分为每两个元素一组(如果有单个元素剩余,则可以剩余的单个元素自己一组),小组内排序,然后合并成一个有序的序列。例子: 排序过程如图所示:图片摘选自:https://blog.csdn.net/ZY_cat/article/details/78404257程序实现:#include &lt;iostream&gt; using namespace std;voi...
原创
发布博客 2018.05.29 ·
15501 阅读 ·
33 点赞 ·
1 评论 ·
181 收藏

常见排序算法--希尔(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最...
原创
发布博客 2018.05.23 ·
191 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

常见排序算法--快速排序

原理:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。以一个数组...
转载
发布博客 2018.05.23 ·
251 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

常见排序算法--冒泡排序

原理:从数组第一个元素开始,与他后一位元素相比较,如果比后面元素大,就交换两者位置,把最大的放在最后一位,然后第二轮比较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...
原创
发布博客 2018.05.23 ·
294 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

常见排序算法--插入排序

原理:先处理第一个元素,然后处理第二个元素,使其插入到合适的位置,使前面的序列有序,然后处理第三个元素,使其插入前两个元素中合适位置使其有序,以此类推,使其有序。举例:数组[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...
原创
发布博客 2018.05.23 ·
142 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多