自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 UE4 Python环境搭建-Pycharm

本人Onenote的笔记 导出好像只能是图片 因为没有代码 所以就先这样了

2021-11-08 15:41:15 804

原创 深入面对对象模型-占位1

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-11-08 15:31:00 598

原创 C++编写文字类RPG游戏,初探设计模式,编写RPG中最重要的物品交互模块

在学习UEc++前自己做练习所书写的一个控制台的RPG文字游戏主要编写的模块就是物品交互比如怪物的掉落物 以及玩家的装备栏系统 第一次采用工厂类的概念去写(但是没有写成模板函数)虽然代码比较少 只有1k行左右 对内存的管理思路也算比较清晰 算是个阶段性的练习作品吧也是自己依靠游戏经验写出的基本框架思路先放几张HUD的截图剩下的几个基类的属性最后放网盘链接 如果有兴趣的大佬请告知设计上的不合理性 感谢链接:https://pan.baidu.com/s/1j0fLICLvgY

2020-12-18 21:22:57 2173 2

原创 C++类型转换

类型转换(cast)是将⼀种数据类型转换成另⼀种数据类型。转换是⾮常有⽤的,但是它也会带来⼀些问题,⽐如在转换指针时,我们很可能将其转换成⼀个⽐它更⼤的类型,但这可能会破坏其他的数据。⼀般情况下,尽量少的去使⽤类型转换,除⾮⽤来解决⾮常特殊的问题。标准 C++提供了⼀个显式的转换的语法,来替代旧的 C⻛格的类型转换 (过于粗暴且极易失控)。新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。 C++⻛格的强制转换其他的好处是,它们能更清晰的表明它们要⼲什么。程序员只要扫⼀

2020-08-16 14:27:26 182

原创 c++泛式编程 (下)类模板

一、类模板类模板和函数模板的定义和使⽤类似,但类模板使⽤时⽆法⾃动推导类型,必须显式指定模板参数类型。类模板在表示如数组、表、图等数据结构特别重要, C++标准库中很多类都是基于模板技术实现。1、语法template<class T>class MyArray{public: explicit MyArray(int n){ p_arr = new T[n]; } T &operator[](int idx){ return p_arr[i

2020-08-16 13:46:45 135

原创 C++泛型编程(上) 函数模板

一、函数模板C++提供了函数模板,通过函数模板建⽴⼀个通⽤函数,其函数类型和形参类型不具体制定,⽤⼀个虚拟的类型来代表,这个通⽤函数就成为函数模板。凡是函数体相同、类型不同的函数都可以⽤这个模板代替,不必定义多个函数,只需在模板中定义⼀次即可。在调⽤函数时系统会根据实参的类型来取代模板中的虚拟类型,从⽽实现不同函数的功能。写两个demo展示一下非模板函数与模板函数的区别int my_min(int a, int b){ return a > b ? a : b;

2020-08-16 13:26:57 150

原创 c++面向对象-多态下(复习)

一、虚函数机制1. 编译阶段,编译器会在类对象中放⼊⼀个 虚函数指针 。2. 当类对象调⽤构造函数初始化时,编译器在构造函数中偷偷增加初始化 虚函数指针 的操作,使之指向⼀张为本对象创建的 虚函数表 ,表内记录的是虚函数的⼊⼝地址。3. 当⼦类继承了⽗类,也继承了⽗类的 虚函数指针 ,期初会指向⽗类的虚函数表,当⼦类调⽤构造函数时,会将 虚函数指针 指向⼦类⾃⼰的 虚函数表 。4. 运⾏时,根据基类指针实际指向的对象,从对象中获取 虚函数指针 找到 虚函数表 ,调⽤对应的

2020-08-16 11:23:04 133

原创 c++面对对象多态上(复习)

一、函数的扩展性1. 函数调⽤时必须严格匹配类型2. 如果类型不符,编译器会进⾏隐式类型转换,如果能转换成⽬标类型,则调⽤成功,如果⽆法转换为⽬标类型,则调⽤失败。3. C++中如果参数接收的是基类类型,那么派⽣类对象可以作为参数传递。在开发中一定要注意函数的扩展性,也就是函数功能的单一化 确保一个函数只干一件事情为什么要这么做,一是为了以后进行函数重载时,方便在原有的函数功能上去拓展新的功能二是避免BUG的寻找难度 如果一个函数内封装多个功能,那么很有可能出问题时需要将整个函数重写。

2020-08-13 11:14:57 141

原创 C++面对对象-继承下(复习)

一、不能继承的函数不是所有的函数都能⾃动从基类继承到派⽣类中。以下四种函数不能被派⽣类继承:私有权限的函数。构造函数。析构函数。赋值运算符函数。构造函数和析构函数⽤来处理对象的创建和析构操作,构造和析构函数只知道对它们的特定层次的对象做什么,也就是说构造函数和析构函数不能被继承,必须为每⼀个特定的派⽣类分别创建。operator=也不能被继承,因为它完成类似构造函数的⾏为。也就是说尽管我们知道如何由 =右边的对象如何初始化=左边的对象的所有成员,但是这个并不意味着对其派⽣类

2020-08-12 22:07:28 171

原创 c++面对对象继承上(复习)

一、作用C++最重要的特征是代码重⽤,通过继承机制可以利⽤已有的数据类型来定义新的数据类型,新的类不仅拥有旧类的成员,还拥有新定义的成员。 继承有以下⼏个作⽤:1. 复⽤已有类的数据、函数,减少冗余代码。2. 修改已有类的功能,⽽不修改原类。3. 扩展已有类的功能,⽽不修改元类。4. 为实现强⼤的多态机制做⽀撑。二、继承方式1.成员访问权限继承中,类成员(静态、⾮静态成员)有三种访问控制权限,public、private、protected。1. public权限的成员能够被

2020-08-12 21:09:43 119

原创 c++面向对象封装下(复习)

一、始化列表当⼀个类对象作为另⼀个类的对象成员时,有时会出现⼀些初始化上的问题1. const成员变量初始化2. 引⽤成员变量初始化3. ⽆默认构造函数对象成员初始化4. 其他普通场景也可以使⽤初始化列表class Sword{public: Sword(int attack, int crit){ m_attack = attack; m_crit = crit;}private: int m_attack; // 基础攻击⼒ int m_

2020-08-12 19:49:07 90

原创 C++面向对象-封装上(复习)

面对对象是由c的面向过程所进化的,总体就三点封装 继承 多态一、理解封装⼜叫隐藏实现,只公开代码单元的对外接口,⽽隐藏其具体实现。封装思想的语法⽀持:把 变量(属性) 和 函数(⾏为) 放在⼀起,作为⼀个整体class封装了⼀个具体事物模型,通过这个模⼦我们可以⽣产多个具有相同特征的对象二、成员访问控制 - public,类外可以访问。 - private,类外禁⽌访问。 - protected(继承)类的访问控制并不是绝对的,因为引入了友元的概念。友元可以访问类的私有成员,

2020-08-12 17:16:28 160

原创 c++文件操作(复习)

C语言中,I/O操作可以简单地看作是从程序移进或移出字节,这种搬运的过程便称为流(stream)。程序只需要关心是否正确地输出了字节数据,以及是否正确地输入了要读取字节数据,特定I/O设备的细节对程序员是隐藏的。 c++必包含的头文件 iostream 意味就是输入输出流首先使用标准库函数进行文件相关操作程序为同时处于活动状态的每个文件声明一个指针变量,其类型为FILE*。这个指针指向这个FILE结构,当它处于活动状态时由流使用。流通过fopen函数打开。为了打开一个流,我们必须指定需要访问的文件或

2020-08-12 12:54:19 240

原创 leetcode题93.复原ip地址

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]解析:什么是合法的ip地址,总共四个数字,每一个的范围都是[0,255]...

2020-08-11 23:40:46 93

原创 c++函数(复习)

函数指针与指针函数函数指针为返回值为指针类型的函数,本质为函数 例 int * f(x,y)指针函数为指向函数的指针变量,本质为指针 例 int(*pf)(int x)指针函数有一个非常大的用途就是写回调函数void Calculator(int(*myCalculate)(int, int), int a, int b){ int ret = myCalculate(a, b); printf("ret = %d\n", ret);}...

2020-08-11 21:49:39 223

原创 c++指针(复习)

指针需要注意的地方非常的多,可以说会不会完全的利用以及理解指针,是从c/c++基础毕业的第一步因为是帮助复习 还是简单从几个块引导出发1.指针为一种数据类型占用内存空间,保存内存地址,其次包括特别关注的指针,一是不指向任何东西的空指针,不可对其解引用,也不许向其拷贝内存,一般用const进行修饰。另一个是指向已删除的对象或未申请访问受限内存区域的指针。操作野指针是非常危险,因为不知道操作的内存地址会造成内存某处的数据篡改,应当将指针初始以及释放时置NULL。指针是一种数据类型,是指它指向的内存空间

2020-08-11 21:18:35 183

原创 c++字符串(复习)

c++在原本的c基础的上的字符串并没有做更多的改动,依旧维持几个注意的点跟字符串的操作函数容易错误的点:c++中一样保持字符串末尾必须是‘\0’,如果调取自己书写的字符串函数一定要注意末尾的改动先做字符串函数的总结 然后看一下C++中的新字符串类型字符串函数总结我分为两种,一种是在常规内存地址上进行改动的,一种是在文件上进行读写的,涉及到文件指针跟缓冲区的一些原理。会在写的同时给大家讲到1 strcpy(s1, s2);复制字符串 s2 到字符串 s1。2 strcat(s1, s2);连接字

2020-08-11 19:00:40 119

原创 C++数组(复习)

整理一下曾经在开发中遇到的一些数组的重点内容容易忽视的小细节:[]中不定义元素个数,定义时必须初始化多维数组指向数组的指针传递数组的函数从函数返回数组1.多维数组在游戏开发中,二维数组多用来表示2D的平面向量或者地图,三维数组则多用来表示三维空间中的坐标XYZ;不过为了项目中表达的方便性,一般采用结构体将多维数组包容在内,2,指向数组的指针俗称 数组指针,与另一个指针数组相差非常大,不要弄混 int arr[5] = { 1,2,3,4,5 }; int *p = arr; fo

2020-08-11 17:05:51 150

原创 LeetCode 120.三角形的最小路径和

上题目给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。一个最简单的思路就是,从底向顶思考,也就是考虑res[x][y]->res[0][0]这个路径的最小和的问题,

2020-08-10 20:52:18 108

原创 虚幻四C++ API 详解

此文章联动虚幻四的蓝图API详解,在此更新一些项目中出现的关键以及晦涩难懂的API接口

2020-08-09 23:09:53 1165

原创 数据结构—链表(1)如何实现链表的反转

给定一个带头结点的链表,将其逆序

2020-08-09 19:24:49 344

原创 数据结构-数组(2)数组规定数移动以及一次for循环打印多维数组

如何将数组后面的M个数移动为前面的M个数题目:有n个整数,使前面各数后移m个位置,最后m个数变成最前面的m个数例:begin[10]={1,2,3,4,5,6,7,8,9,10};//移动后over[10]={6,7,8,9,10,1,2,3,4,5};思路:1.首先将前m个 以及前n-m个元素分别顺序颠倒middle[10]={5,4,3,2,1,10,9,8,7,6};2.最后将整个数组对位交换over[10]={6,7,8,9,10,1,2,3,4,5};代码示例:voi

2020-08-08 10:25:53 137

原创 Leetcode题1.两数字和

题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]暴力循环 通用解class Solution{public: vector<int> twoSum(vecto

2020-08-07 10:34:08 143

原创 数据结构—数组(1)递归数组求和以及判断数组元素递增与否

递归实现数组求和#include <iostream>using namespace std;int RecArraySum(int intArray[], int length){ if (length == 0) { //如果数组为空,返回0 return 0; } else if (length == 1) { //如果数组只有一个元素,返回该数组元素 return intArray[length - 1]; } else { //数组最后

2020-08-04 16:50:43 301

原创 Tick事件在不同设备上保持同步处理的方式

Tick事件是保证每帧处理执行事件,这个事件对于一些固定目标执行非常方便,但是会导致一个非常致命的问题,Tick事件触发并不是以时间来触发,而是以每个设备的帧数来触发,而且尽量保证最快速显示更新,所以,在速度快的设备上,触发时间更短那么问题来了 怎么样才能保证每台设备上的Tick事件都能保证一样的执行效率Tick有Delta Seconds接口,这个接口值表示,从上一次触发Tick到这次触发Tick的时间也就是如果我们要规定移动距离在不同设备上都保持固定时,那么作为移动距离的数值与该Delta Sec

2020-08-04 12:03:02 686

原创 面对对象与面对过程的代码对比demo

根据上一篇博客 引出面对对象跟面对过程的区别 现在用代码实现写一个简单的计算器demo#include <iostream>using namespace std;//获取一个数字int getNumber(void){ int num = 0; cout << "please input a nubmer: "; cin >> num...

2019-12-23 20:00:02 128

原创 c语言中指针常见的错误

指针使用在c/c++中指针在c/c++中非常强大 但是初学者使用经常带来一些错误 以下整理博主自己在开发过程中存在的一些错误点// 1. 存储数据时,越界void test01(){ // 1. 数组操作越界 char name[] = "googleyst"; printf("%c", name[100]); // 2. 指针不断操作导致越界 ...

2019-12-18 20:05:37 478

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除