![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
Mr.攻城狮
小小博主
展开
-
C++命名空间的认识
我对C++命名空间的一些认识。刚开始接触C++语言的时候,对命名空间,也就是所谓的namespace,并没有多大理解,也就是大概的知道下它是干嘛的。在我写第一个C++程序的时候,其实就已经接触到了namespace,可惜一开始的我并没了解那么多额外的东西,就知道输出个“Hello World”就完事了。到了后来我才知道namespace是有大学问的呢。一、下面我来以输出个“Hello Wor...原创 2019-04-18 09:36:04 · 387 阅读 · 0 评论 -
_Find_pr()来匹配字符串是否相等
用_Find_pr()这个算法做一个小功能,这个算法呢是不需要包含algorithm这个头文件的。这个算法有四个参数的_Find_pr(迭代器的起始值,迭代器的末尾值,值,仿函数),这个算法可以拿来干嘛呢,在这里呢我就拿来对比两个字符串是否相等:#include<iostream>#include<vector>using namespace std;bool fu...原创 2019-07-08 09:52:50 · 139 阅读 · 0 评论 -
单例模式
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。就好比如电脑的任务管理器就单例模式。单例模式的步骤:1、构造函数私有化2、增加静态私有的单前类的指针变量3、提供静态对外接口,可以让用户获得单例对象因为构造函数私有化,就意味着,只能在Lazy/Hungry的成员函数中...原创 2019-07-08 11:05:18 · 63 阅读 · 0 评论 -
类型转换(一)
C++提供了四种类型转换,分别处理不同的应用场合static_cast:静态类型转换 reinterpreter_cast:重新解释类型转换dynamic_cast:子类和父类之间的多态类型转换 const_cast:去掉const属性转换第一个static_cast:静态类型转换 static_cast<目标类型>(标识符)所谓的静态就是在编译的时候就已经决定...原创 2019-06-28 11:17:04 · 164 阅读 · 0 评论 -
类型转换(二)
const_cast:去掉const属性转换 const_cast<目标类型>(标识符)//目标类型只能是指针或是引用#include<iostream>using namespace std;struct test{ int data;};void main(){ const test a = { 100 }; //test a1 = const_...原创 2019-06-28 11:19:38 · 88 阅读 · 0 评论 -
继承在异常中的应用
#include<iostream>using namespace std;class Myexception//异常基类{public: virtual void what()=0; virtual ~Myexception() {}};class Myval:public Myexception{public: virtual void what() { ...原创 2019-07-18 09:57:04 · 85 阅读 · 0 评论 -
栈解旋
栈解旋:异常被抛出后,从进入 try 块起,到异常被抛掷前,这期间在栈上的构造的所有对象, 都会被自动析构。析构的顺序与构造的顺序相反。这一过程称为栈的解旋(unwinding)。#include<iostream>using namespace std;class Person{public: Person() { cout << "我是构造函数" &l...原创 2019-07-18 10:15:45 · 1001 阅读 · 0 评论 -
模板方法模式
定义:一个操作的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。实现方案:将算法/逻辑框架放在抽象基类中,并定义好实现接口,在子类中实现细节接口。也就是呢,玩游戏,不可能一开始就结束的啦,肯定就要先匹配玩家战斗,直到战斗结束,都是有这个固定的一个过程的,是要按顺序来执行下去的。#include<iostream>using...原创 2019-07-28 20:14:09 · 226 阅读 · 0 评论 -
外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。就是将复杂的子类系统抽象到同一个的接口进行管理,外界只需要通过此接口与子类系统进行交互,而不必直接与复杂的子类系统进行交互。主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。#incl...原创 2019-07-28 20:55:13 · 174 阅读 · 1 评论 -
策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,并且是它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。#include<iostream>using namespace std;//抽象武器 武器策略class Weapon{public: virtual void UserWeapon() = 0;};class Knife :public...原创 2019-08-07 20:44:48 · 118 阅读 · 0 评论 -
开闭原则
开闭原则:对扩展开放,对修改关闭,增加功能是通过增加代码来实现,而不是修改源代码#include<iostream>using namespace std;//计算机抽象类class Calculator{public: virtual int Get_Calculator()= 0; virtual void Set_Calculator(int a, int b) ...原创 2019-08-07 21:25:13 · 135 阅读 · 1 评论 -
代理模式
代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。在某些去情况下,一个对象不适合或不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用。#include<iostream>#include<string>using namespace std;class Commit{public: virtual void run() = 0;...原创 2019-08-18 11:21:33 · 92 阅读 · 1 评论 -
Algorithm算法
STL 提供了大约 100 个实现算法的模版函数,比如算法 for_each 将为指 定序列中的每一个元素调用指定的函数,stable_sort 以你所指定的规则对序列 进行稳定性排序等等。这样一来,只要熟悉了 STL 之后,许多代码可以被大大的 化简,只需要通过调用一两个算法模板,就可以完成所需要的功能并大大地提升 效率。下面我就写了两个算法:#include <iostream>...原创 2019-06-18 09:39:14 · 970 阅读 · 0 评论 -
函数类型和函数指针
函数类型的语法基础:函数指针用于指向一个函数, 函数名是函数体的入口地址1)可通过函数类型定义函数指针: FuncType* a;2)也可以直接定义:type (*a)(parameter list);a为函数指针变量名type为指向函数的返回值类型 parameter list为指向函数的参数类型列表#include<iostream>using namespa...原创 2019-06-18 09:35:56 · 489 阅读 · 0 评论 -
C++中的switch case 语句
在接触流程控制语句switch case的时候,感觉这个很有意思,就花了点时间去慢慢的去深入了解它,并且和if语句一起嵌套使用,就找了个题目来练练手,这个就是通过输入年份和月份,来判断年份是否为闰年,并且可以知道你输入的月份有多少天。#include <iostream>using namespace std;void main(){int year, month, mon;...原创 2019-04-18 10:45:00 · 17312 阅读 · 6 评论 -
C++中的引用
引用是什么呢?引用可以看作一个已定义变量的别名,引用说明为对象建立引用名,即别名,引用在定义初始化时与对象名绑定,程序中不能对引用重定义,一个对象的别名,从使用方式和效果上,与使用对象名一致。引用的语法为:类型 &引用名=对象名,&是引用标识符如: #include <iostream> using namespace std; void main() {...原创 2019-04-28 08:42:15 · 152 阅读 · 0 评论 -
C++程序的内存区域
在C++中程序的内存区域,可以分为四大部分吧:代码区、全局数据区、堆区、栈区。代码区:顾名思义它就是存放我们所打的代码的放置区啦。全局数据区:存放程序的全局数据和静态数据全局数据:它有个关键字extern就是声明全局量的 #include <iostream> using namespace std; extern int a=10;//这个extern一般是不用写...原创 2019-04-28 15:56:03 · 316 阅读 · 0 评论 -
C++中for循环语句
for循环语句我们应该都挺熟悉的,for循环的结构也比较简单: for(初始表达式;逻辑表达式;循环后置表达式){ 循环体 } 可以for循环有很多种写法,有不同形式的语句结构,但是得到结果都是一样的。原始的表达式:#include <iostream>using namespace std;void main(){ int n = 10; in...原创 2019-05-08 20:32:52 · 20926 阅读 · 4 评论 -
C++中的指针
我们都知道在C++中指针,很好用,指针可以简化C++编程任务的执行,有一个动态内存分配没有指针是完成不了的,在C++中学好指针那么你也就差不多学会一半的啦,所以非常有必要把这个指针学好的呢!我们知道变量都有一个它内存的所在的位置,这你就要用到一个符号“&”,这个叫作取址符,它表示的是内存中的一个地址,我们可以试一下:#include <iostream>using name...原创 2019-05-08 21:01:44 · 1358 阅读 · 0 评论 -
重载
重载函数调用符号(operator())把类对象像函数名一样使用。仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。class 类名 { 返值类型 operator()(参数类型) 函数体 }#include <iostream>using namespac...原创 2019-05-17 10:51:03 · 2268 阅读 · 0 评论 -
两个存储类
static 存储类:static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。在 C++ 中,当 static 用在类数据成员上时,会导致仅有一...原创 2019-05-17 14:38:05 · 110 阅读 · 0 评论 -
默认参数和占位参数
一般来说呢,函数在调用的时候,形参从实参那里取得值。当我们多次调用用一函数同一实参的时侯,C++就给出了更简单的处理办法。给形参以默认值,这样就不用从实参那里取值了。默认参数规则:只有参数列表后面部分的参数才可以提供默认参数值,一旦在一个函数调用中开始使用默认参数值,那么这个参数后的所有参数都必须使用默认参数值。单个默认参数#include<iostream>using ...原创 2019-05-28 09:54:34 · 2349 阅读 · 0 评论 -
螺旋矩阵
用个二维数组做了个螺旋矩阵, #include<iostream> #include <iomanip> using namespace std; void main{ int a[5][5];//一个五行五列的二维数组 int length = 4; int num = 1;//螺旋矩阵的起始值 int b = 0; int i = 0; ...原创 2019-05-28 10:52:27 · 148 阅读 · 1 评论 -
链表
程序对数据的表示,不但要求存放基本信息,还要表示与其它数据元素的关系线性表是最简单的数据组织形式。下面我们来建立和遍历一个链表。#include<iostream>using namespace std;//声明一个链表节点的结构体struct node{ int data; node * next;};//创建链表node * CreateList(){...原创 2019-06-09 17:14:53 · 72 阅读 · 0 评论 -
输入输出流
下面编写程序统计一个文件中的字符总数、非空白字符总数、字母总数和平均单词长度,并输出到屏幕和输出文件output.txt。这个要用到输入输出流#include<iostream>#include<fstream>#include<iomanip>using namespace std;bool isalph(char c){ return ((c ...原创 2019-06-09 17:44:12 · 112 阅读 · 0 评论 -
适配器模式
将一个 类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作#include<iostream>#include<vector>#include<algorithm>using namespace std;//已经写好的struct Func{ void operator()(int a,int b) {...原创 2019-08-18 11:30:19 · 85 阅读 · 1 评论