C++
后起乱秀
这个作者很懒,什么都没留下…
展开
-
抽象工厂模式
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。继承父类工厂的不同子类,分别新建不同的实例,当实例不同的子类时,就可以new 不同的类了。以下是代码案例://抽象苹果class AbstractApple {public: virtual voidShowName() = 0;}; //中国苹果class ChinaApple :public AbstractApple {public: virtual voidShowNa原创 2020-06-08 23:10:40 · 100 阅读 · 0 评论 -
C++中的友元函数
/*采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破...原创 2019-06-18 10:54:55 · 168 阅读 · 0 评论 -
C++标准输入流
#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;#if 0标准输入流对象 cin,重点掌握的函数cin.get() //一次只能读取一个字符cin.get(一个参数) //读一个字符cin.get(三个参数) //可以读字符串cin.getline()cin.ignore(...原创 2019-06-18 10:57:22 · 186 阅读 · 0 评论 -
C++ 纯虚函数和抽象类
#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;//图形类//如果说一个类 拥有一个纯虚函数//就称这个类是一个抽象类。//不管这个类中有没有成员属性,只要这个类有纯虚函数,就是一个抽象类,抽象类不能实例化。class Shape{public: //求图形面积的方法 /...原创 2019-07-08 11:08:26 · 162 阅读 · 0 评论 -
C++ 面向抽象类编程-电脑组装案例
#include<iostream>using namespace std;//------------抽象层----------//抽象的CPU类class CPU {public: virtual void caculate() = 0;};//抽象的显卡类class Aard {public: virtual void display() = 0;};...原创 2019-07-08 11:10:13 · 238 阅读 · 0 评论 -
C++ 中文件输入输出
文件操作的基本步骤:打开文件读 / 写文件关闭文件详解案例如下:#include<iostream>using namespace std;#include<fstream> //文件读写void test02() { char* sourceName = "C:\\Users\\123\\Desktop\\source.txt"; char* ta...原创 2019-06-28 10:38:18 · 175 阅读 · 0 评论 -
C++ 继承中构造析构调用原则
构造析构调用原则:1、子类对象在创建时会首先调用父类的构造函数2、父类构造函数执行结束后,执行子类的构造函数3、当父类的构造函数有参数时,需要在子类的初始化列表中显示调用4、析构函数调用的先后顺序与构造函数相反案例如下:#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;clas...原创 2019-06-28 10:57:51 · 215 阅读 · 0 评论 -
C++ 用结构体实现多态
#define _CRT_SECURE_NO_WARNIGS#include <iostream>using namespace std;//------------抽象层-----------//定义一个锦囊类型typedef void(TIPS)(void);//定义锦囊struct tip{ char from[64];//谁写的 char to[64];/...原创 2019-07-18 14:39:27 · 2456 阅读 · 1 评论 -
C++ 多态案例-图形
#define _CRT_SECURE_NO_WARNIGS#include <iostream>using namespace std;class Shape {public: virtual void show() = 0; virtual double ShowArea() = 0; virtual ~Shape() {};};class Square :...原创 2019-07-18 14:43:18 · 322 阅读 · 0 评论 -
C++中 模板使用案例
使用模板写函数可以给多个类型使用,这样就能减少代码量。#define _CRT_SECURE_NO_WARNIGS#include <iostream>using namespace std;//对char类型和int类型数组进行排序 //打印函数template <class T>void PrintArray(T* arr, int len) {...原创 2019-08-08 14:46:26 · 102 阅读 · 0 评论 -
C++ 中的try-catch异常
代码和讲解如下:#include<iostream>using namespace std;//一、异常基本语法int divide(int x, int y) { if (y==0) { throw y; //抛异常 } return x / y;}void test01() { //试着去捕获异常 try { divide(10, 0); ...原创 2019-07-28 20:18:01 · 203 阅读 · 0 评论 -
C++ 中的类型转换
代码和讲解如下:#include<iostream>using namespace std;class Building{};class Animal{};class Cat:public Animal{};//static_castvoid test() { int a = 100; char c = static_cast<char>(a); c...原创 2019-07-28 20:25:21 · 118 阅读 · 0 评论 -
C++中的虚析构函数
/*虚析构函数构造函数不能是虚函数。建立一个派生类对象时,必须从类层次的根开始,沿着继承路径逐个调用基类的构造函数。析构函数可以是虚的。虚析构函数用于指引delete运算符正确析构动态对象。*/案例如下:#include<iostream>using namespace std;class A{public: A() { cout << "A...原创 2019-06-10 11:39:18 · 93 阅读 · 0 评论 -
C++多态的定义和三个必要条件
/*什么是多态?多态的定义是:如果有几个上似而不完全相同的对象,有时人们要求在向它们发出同一个消息时, 它们的反应各不相同,分别执行不同的操作。这种情况就是多态现象。例如,A和B两个班都是高三年级,他们有基本相同的属性和行为,在同时听到上课铃声的时候,他们会分别走向两个不同的教室,而不会走向同一个教室。多态发生的三个必要条件:1.要有继承。2.要有虚函数重写。3.父类指针或引用...原创 2019-06-10 11:01:12 · 3170 阅读 · 1 评论 -
C++中引用变量
一般情况下的引用变量是我们现有变量的一个拷贝,相当于我们可以利用一个新的变量名称来代替原变量的使用,下面是一个小例子:#include <iostream>using namespace std;int main(){ int rats=101; int &rodents=rats; //这里定义了引用变量rodents cout<...原创 2019-04-28 09:05:33 · 580 阅读 · 0 评论 -
用C++写的一个‘23’游戏
“23”游戏是一个双人游戏,道具是23根牙签,玩家轮流取1,2或3根牙签。拿到最后一根牙签的是输家。写程序和计算机玩“23”。总是玩家先走,轮到计算机时,它根据以下规则采取行动:a.如果剩余牙签多于4根,计算机就取走4-x根,x为玩家上次取走的牙签数b.如果剩余2-4根牙签,计算机取走足够多的牙签,确保只剩下1根c.如果剩余1根牙签,计算机只能取走它并且认输玩家输入要取走的牙签数量时,...原创 2019-04-28 16:11:45 · 623 阅读 · 0 评论 -
c++中用new分配内存
new的作用和使用方法如下:new的作用在于可以在程序运行阶段动态分配内存,内存的大小在运行时根据需要确定,从而高效利用内存空间。new的使用方法如下:typeName* pointer_name = new typeName使用时用户需要指定类型(指针类型和要开辟的内存存储的数据类型),new可以自动找到一个正确长度的内存块,并返回内存块的地址。分配内存失败时,默认抛出bad_al...原创 2019-05-08 16:50:42 · 6338 阅读 · 0 评论 -
C++中的枚举
Enum(枚举)是一种创建符号常量的方式,可用于替代const。定义:默认情况下,enum定义的枚举量会成为符号常量,对应从0开始的整数,从左到右依次+1。例如:enum color{red, orange, yellow, green, blue, violet, black};1color是枚举名,是一种新类型,red、orange、yellow等是枚举量,都是符号常量,对应0...原创 2019-05-08 18:44:21 · 433 阅读 · 0 评论 -
C++中命名空间
在使用c++时,一般都会有用到using namespace std;,这就是名称空间。名称空间是c++的新特性其作用如下:防止名称冲突,简化大型项目的管理工作。替代全局变量,可以跨文件使用。就形式来看,名称空间与类很像:namespace a{ int i; int func(int a){return ++a;};}namespace b{ in...原创 2019-05-08 18:46:16 · 142 阅读 · 0 评论 -
C++中静态成员变量和静态成员函数
在 C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。类的静态成员,属于类,也属于对象,但终归属于类。写法格式//声明static 数据类型 成员变量; //在类的内部//初始化数据类型 类名::...原创 2019-05-17 14:49:03 · 117 阅读 · 0 评论 -
C++中const指针
如何区分常量指针和指向常量的指针呢?一个简单的方法:从右向左读。例:const int p; // p是一个int型常量 这个很简单const int *p; // p是一个指针,指向int型常量。即p是一个指向int型常量的指针。int * const p; // p是一个指向int的const指针const int * const p; // p是一个指向int型常量...原创 2019-05-17 15:00:18 · 1582 阅读 · 0 评论 -
C++中运算符重载
运算符重载使得用户自定义的数据以一种更简洁的方式工作。比如Int x,y; 可以为y=x+y;而 My c1,c2;如果想使得两个自定义的对象相加,以前只能调用函数计算它们的和。而现在只要定义了运算符重载就能实现c1=c1+c2.所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是“一名多用”。...原创 2019-05-28 10:08:23 · 128 阅读 · 0 评论 -
C++中的多继承应用
多继承就是一个类有多个直接基类的继承关系被称为多继承关系一个派生类对象拥有多个直接或间接基类的成员。不同名成员访问不会出现二义性。如果不同的基类有同名成员,派生类对象访问时应该加以识别。例如:class A{public: int a; int d;};class B {public: int b; int d;};class C: public A,public B...原创 2019-05-28 10:10:33 · 792 阅读 · 1 评论 -
C++中数组的冒泡排序
算法分析:按降序排序时,若一组整数放在数组a[0],a[1],……,a[n-1]中,冒泡排序法是采用相邻元素比较的方法所以第一轮比较是让a[0]和a[1]比较如果a[0]大于a[1]就交换数组存放的数据,反之则不交换,然后再让a[1]和a[2]进行比较,如果a[1]大于a[2]就交换数组存放的数据,反之则不交换,以此类推直到a[n-2]与a[n-1]比较。为了使效率的到优化增加一个判断...原创 2019-06-10 10:59:11 · 1356 阅读 · 0 评论 -
C++递归函数实现九九乘法表
C++递归函数实现九九乘法表开发工具与关键技术: VS,C++作者:余文龙撰写时间:2019年4月11号递归函数就是直接或间接调用自己的函数,利用这个特性我们就可以在它调用自己的同时输出我们想要的数据。下面是我用递归函数实现的九九乘法表的代码和注释#include<iostream>using namespace std;int nine(int); ...原创 2019-04-18 08:09:14 · 3241 阅读 · 0 评论