c++笔记
文章平均质量分 61
学习c++的一些分享
买代码的小猪猪
不断学习,分享技术
展开
-
相亲系统(文件版)
分析;需要定义两个 类型男孩类(姓名,年龄,薪水)和女孩类(姓名,年龄,薪水)这里为了发辫用户实现就用来这三个数据,其中两个数据相同,所以可以先定义一个父类父类的头文件;Single.h#pragma once#include<iostream>#include<string>using namespace std;class Single{public: Single(string name,int age); int getage(); string g原创 2020-11-01 09:37:46 · 659 阅读 · 0 评论 -
俄罗斯方块(c++)
#include<stdio.h>#include<graphics.h>#include<Windows.h>#include<time.h>#include<conio.h>int score = 0;//总分int rank =0;//等级int NextIndex=-1; //下一个要降落方块的种类int BlockIndex =1; //本次降落方块的种类#define BLOCK_COUNT 5#def.原创 2020-10-03 22:41:11 · 599 阅读 · 0 评论 -
推箱子游戏(简易)
头文件:boxman.h#define KEY_UP 'w'#define KEY_DOWN 's'#define KEY_LEFT 'a'#define KEY_RIGHT 'd'#define KEY_QUITE 'q'#define MAP_X 9 #define MAP_Y 12#define RATIO 61 //像素点#define SCREEN_WIDTH 960#define SCREEN_HEIGHT 768#define isValid(pos) pos.x原创 2020-09-28 16:26:15 · 396 阅读 · 2 评论 -
超级简陋的暴力破解程序
客户端#include<iostream>#include<Windows.h>#include<string>using namespace std;int main(){ string pwd; while(1){ cout << "please input your password:"; cin>>pwd; if(pwd == "000123"){ break; }else{ cout<&.原创 2020-07-29 21:25:14 · 844 阅读 · 0 评论 -
修仙游戏(重载运算符练习)
某仙侠游戏中,有以下需求:这个游戏世界中,有妖兽,灵石,修仙者妖兽有自己的种类。妖兽分为不同的等级:1级妖兽:价值 100:初阶灵石2级妖兽:价值 200初阶灵石3级妖兽:价值 500初阶灵石4级妖兽:价值 1000初阶灵石5级妖兽:价值 2000初阶灵石6级妖兽:价值 5000初阶灵石7级妖兽:价值 10000初阶灵石8级妖兽:价值 20000初阶灵石9级妖兽:价值 100000初阶灵石灵石:是一种类似黄金的硬货币。灵石有级别:初阶灵石:1中阶灵石: 10初阶灵石1高.原创 2020-11-21 14:12:25 · 665 阅读 · 0 评论 -
两个设备之间的转换(多态性练习)
要求:有两个设备,一个设备正常运行,所有出现故障,立马转换到里一个设备。因为原来已经定义好一个类了,所以直接用了继承原来的设备:ODU.h#pragma once#include<string>#define ODU_TYPE_331_FLAG "331"#define ODU_TYPE_335_FLAG "335"using namespace std;enum class ODU_TYPE { ODU_TYPE_331, ODU_TYPE_335, ODU_TYPE原创 2020-11-25 14:00:38 · 206 阅读 · 0 评论 -
MySQL数据库---VS019 C++访问MySQL
C++访问数据库1.配置2.数据库中的数据1.配置如果第一次使用需要先对vs2019进行配置第一步:打开mysql的安装目录,默认安装目录如下:C:\Program Files\MySQL\MySQL Server 8.0,确认 lib 目录和include 目录是否存在。第二步:打开VS2019,新建一个空工程,控制台应用程序即可,注意:解决方案平台选择 X64第三步:右击工程名,打开属性页第四步:打开VC++目录,在包含目录中,将mysql安装文件中的include文件的路径添加到这翻译 2021-05-07 16:31:59 · 134 阅读 · 1 评论 -
C++之重载运算符(+)
实现:一斤牛肉两块钱一斤羊肉三块钱通过运算符重载,实现牛肉+羊肉,实现牛肉 + 牛肉。Coin.h#pragma once#include<iostream>using namespace std;class Coin{public: Coin(int money); string description();private: int money = 0;};Coin.cpp#include "coin.h"#include<sstream>C原创 2021-04-29 20:33:27 · 286 阅读 · 0 评论 -
c++之友元(电脑升级)
友元1.友元函数(1).全局函数作为友元函数(2).类的成员函数作为友元函数2.友元类1.友元函数(1).全局函数作为友元函数这种友元函数可以在主函数使用,直接可以访问内部私有成员实例:定义一个电脑类型,cpu的初始为i7,用友元函数升级到i9Computer.h#pragma once#include<string>using namespace std;class Computer{public: Computer(); friend void upgrade(原创 2021-04-28 19:42:10 · 93 阅读 · 0 评论 -
c++之继承
继承可以使得子类具有父类的变量和方法。并且可以在子类中添加新的成员和函数。演示:创建一个父类,里面含有姓名和工作,并且有一个方法是工作创建一个子类,继承父类的东西,并且有自己的变量-爱好,和方法–playFather.h#pragma once#include<iostream>using namespace std;class Father{public: Father(int age,string name); void work();protected: .原创 2021-04-23 15:06:35 · 53 阅读 · 0 评论 -
c++ error:具有类型“XXX”的表达式会丢失一些 const-volatile 限定符以调用“XXX”(set)
在学习set/mulitset的仿函数中,自己定义了一个仿函数,但是出现了错误:#include<iostream>#include<set>#include<functional>#include<algorithm>using namespace std;class student {public: student(int age) { this->age = age; } bool operator <(const s原创 2021-01-30 08:57:38 · 497 阅读 · 0 评论 -
C++11之变参模板、完美转发
此功能是为了提高往容器里存储对象效率而产生的。变参模板 - 使得 emplace 可以接受任意参数,这样就可以适用于任意对象的构建完美转发 - 使得接收下来的参数 能够原样的传递给对象的构造函数,从而减少多余的操作,提高效率传统的:#include<iostream>#include<vector>#include<algorithm>#include<string>using namespace std;class student {pu原创 2021-01-27 09:34:24 · 279 阅读 · 0 评论 -
c++之浅拷贝和深拷贝的区别
c++中对于浅拷贝的深拷贝的区别在于:对指针的使用浅拷贝:指向原内存深拷贝:自己分配一块内存,在其指向如下例子所示:#include<iostream>#include<Windows.h>#include<string>using namespace std;class student {public: student() { name = new char[10]; age = 18; } ~student() { cout &.原创 2021-01-27 09:10:47 · 453 阅读 · 0 评论 -
头文件保护(防止头文件多次包含)----<<C++ Primer>>
#define:指令把一个名字设定为预处理变量#ifdef:当且仅当预处理变量已经定义时,为真#ifndef:当且仅当预处理变量未定义时,为真#endif:一旦上述两个结果为真,则执行后续操作,知道遇 #endif指令位置为止举例:Sale.h#ifndef SALES-DATA#define SALES-DATAcalss DATE{private:int a;double b;char c;};#endif定义了一个类,放在一个头文件Sale.h中,当有程序第一次包含Sa原创 2021-01-14 11:00:59 · 619 阅读 · 0 评论 -
异常处理机制
/*异常处理机制:普通的函数调用是一级一级的调用,c++提供的异常处理机制,通过关键字throw直接把错误的数据扔回主函数,然后主函数汉抓住扔掉的数据,但是怎样知道去哪抓,这就通过try关键字,对函数进行尝试即异常处理通过 throw扔出去,try和找,catch去抓 完成的.而且不同的类型,分成不同的执行部分如果不知道是是什么类型的,就用…*/#include<stdio.h>#include<stdlib.h>int copyfile(){ throw原创 2020-12-02 14:36:58 · 54 阅读 · 0 评论 -
函数重载与默认函数
`一:函数重载`int add(int a, int b) { cout << "调用add版本1" << endl; return a +b;} float add(float a, float b) { cout << "调用add版本3" << endl; return a+b;}函数名重载:函数名相同,但是, 函数的参数(形参)绝不相同:1.参数个数不同2.原创 2020-11-29 12:10:49 · 151 阅读 · 0 评论 -
引用和指针的区别
其实引用就是一种特殊的指针只不过它不需要取地址,因为引用的取地址操作已经放在系统里了引用就是一个不可以改变地址,但可以改变内容的指针#include <stdio.h>#include <stdlib.h>void swap(int a, int b){ int tmp = a; a = b; b = tmp;}//方式一, 使用指针void swap1(int *a, int *b){ int tmp = *a;原创 2020-11-29 12:08:17 · 92 阅读 · 0 评论 -
动态内存分配与删除
c++提供了new和delete来创建和删除内存#include<Windows.h>#include<iostream>#include<stdio.h>#include<string.h>int main(){ int num[10]={1,2,3,4,5,6,7,8,9,10}; int *p; p=new int[20]; memcpy(p,num,sizeof(num));原创 2020-11-29 12:01:54 · 186 阅读 · 0 评论 -
类模和静态数据成员
在类模板中使用静态数据成员,也是赋值的时候,要说明虚拟函数参数,并且如果类定义的虚拟类型不一样,那么静态数据的值不一样,原理很简单,就是因为他们是分成了两种不同的类嘛#include<iostream>using namespace std;template <typename T>class A {public: A(T t = 0); T getT(); static T count;private: T t;};template <typename原创 2020-11-29 11:32:15 · 140 阅读 · 0 评论 -
c++友元函数与模板类的使用
友元函数在模板类中的使用很繁琐,从声明友元函数开始,就要声明虚拟类型,然后并在声明友元函数的头放上虚拟参数列表,之后的实现过程中也要加上虚拟列表#include<iostream>using namespace std;template <typename T>class A {public: A(T t = 0); T getT(); A operator+(const A& other); template <typename T>原创 2020-11-29 10:44:14 · 141 阅读 · 0 评论 -
模板类的三种写法
1.将模板类函数写在类内2.将模板类函数写在类外,在一个文件中3,将模板类函数写在类的外部,在不同的.h和.cpp中#include<iostream>using namespace std;template <typename T>class A {public: A(T t = 0) { this->t = t; } T getT() { return t; } A operator+(const A& other) { A原创 2020-11-29 09:32:43 · 1666 阅读 · 0 评论 -
c++类模板与继承
继承中父子类和模板类的结合情况:1.父类是一般类,子类是模板 类2.父类是模板类,子类是一般类。3.父类和子类都是模板类;1.#include<iostream>using namespace std;class A{public: A(int a = 0){ this->a = a; }private: int a;};template <typename T>class B :public A {public: B(T b = 0)原创 2020-11-28 17:53:59 · 414 阅读 · 0 评论 -
多态性最最简单应用,以及对象数组使用方法
在学习多态性的过程中,学会了使用对象数组,还是指针的,具体思想如下,先用类定义对象(父亲和儿子都要定义),再把这些对象,放入定义的对象数组中,而且父类对象数组中可以包含子类对象,还有就是实现多态性,就在父类成员函数前面加virtual就行上代码:Father.h#pragma once#include<iostream>using namespace std;class Father{public: virtual void play();};Father.cpp#i原创 2020-11-21 15:55:59 · 188 阅读 · 0 评论 -
文件操作,将数据传到txt文件中
输入任意多个整数, 把这些数据保存到文件data.txt中.如果在输入的过程中, 输入错误, 则提示用户重新输入.指导用户输入结束(按ctrl + z)[每行最多保存10个整数]#include<iostream>#include<fstream>using namespace std;int main() { int count = 1; int num; ofstream stream; stream.open("num.txt"); if (!strea原创 2020-11-03 19:42:05 · 557 阅读 · 0 评论 -
c++文件流的定位
一:seekgseekg( off_type offset, //偏移量ios::seekdir origin ); //起始位置作用:设置输入流的位置参数1:偏移量参数2:相对位置beg 相对于开始位置cur 相对于当前位置end 相对于结束位置例题:读取当前程序的最后50个字符分析:运用输入流的位置操作,把输入流的位置移到最后50个字符处.#include<Windows.h>#include<string>#i原创 2020-10-28 11:07:15 · 462 阅读 · 1 评论 -
c++文件指定格式输入输出
输入的思想把数据都先放在一个数据流中在通过这个流把这些数据放进文件中#include<Windows.h>#include<iostream>#include<string>#include<sstream>#include<fstream>using namespace std;int main() { ofstream outfile; outfile.open("小公举.txt"); string name; int原创 2020-10-28 09:56:30 · 375 阅读 · 0 评论 -
c++二进制文件的输入输出
二进制文件输入输出与文本文件想类似下列是输入:#include<Windows.h>#include<iostream>#include<fstream>using namespace std;int main(){ ofstream outfile; string name; int age; outfile.open("小猪.bat", ios::out | ios::trunc | ios::binary); while (1) { cou原创 2020-10-27 14:12:58 · 1731 阅读 · 0 评论 -
c++文本文件的输入和输出
c++对文件的操作使用数据流来实现的对文件操作一般都是用里面的类来实现的一般常用:ifstream:对文件输入(读文件)ofstream :对文件输出(写文件)fstream : 对文件输入或输出文件的输入:先用ifstream类定义一个对象在用这个对象的方法打开文件,然后就可以把数据通过这个对象输入到文件中了(想象成一个管子,插到文件中,然后把数据流进去)最后不要忘记关闭文件。#include<Windows.h>#include<iostream>#inc原创 2020-10-26 16:16:11 · 1171 阅读 · 0 评论 -
ODU设备(小白练习继承)
某无线通信设备ODU设备, 具有以下功能:查看发射功率, 设置发射功率,查看发射频率, 设置发射频率,查看带宽, 修改带宽,查看设备概述(各指标的值).后来对该产品做了升级, 研发了ODU330产品:这个产品, 新增加了以下功能:查看当前的误码率.查看误码率告警门限设置误码率告警门限项目思想:建立一个ODU类,再派生出ODU330先建立一个ODU头文件和源文件ODU.h#pragma once#include<string>using namespace std;原创 2020-10-25 15:30:16 · 886 阅读 · 0 评论 -
c++中类的组合使用
题目:定义一个或多个类,来描述以下需求:汽车,有多个轮胎,一个发动机,品牌,型号, 价格,行驶里程。轮胎,有品牌,尺寸,气压。发动机,有品牌,型号。分析:通过分析,可以得出我们应该创建三个类分别为汽车,轮胎,发动机发动机类的代码:(Engine.h)#pragma once//发动机,有品牌,型号#include<string>using namespace std;class Engine{public: string getband(); string原创 2020-10-18 08:48:24 · 908 阅读 · 0 评论 -
c++四种基本的构造函数
#include <iostream>#include <Windows.h>#include <string>#include <string.h>using namespace std;class Human {public: Human(); //默认构造函数 Human(int age, int salary);//自定义构造函数 Human(const Human&); //拷贝构造函数 Human原创 2020-10-11 09:38:42 · 1168 阅读 · 0 评论 -
类文件的分离
这里分成三个文件分别是:主文件(用来执行的)类的声明的头文件,类的定义的cpp文件主文件:构造.cpp#include <iostream>#include <Windows.h>#include <string>#include <string.h>#include"Human.h"using namespace std;int main(void) { Human h1(26,20000); Human h2(60,39999).原创 2020-10-09 16:45:11 · 218 阅读 · 0 评论