自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 蓝图的教程

动作映射是判断按的键是否按下或者释放,轴映射是用来判断是否按键一直按着的情况,每帧每帧检测。(这边还有个小技巧就是可以把这个旁边的键点一下,变成黄色的然后输入自己想输入的字母)---然后在角色的文件夹下面创建一个角色的蓝图类,创建角色的蓝图类是因为角色蓝图专门用作人物的属性,封装了很多跑步、、蹲伏飞行等等属性组件:不同组件可以给蓝图添加不同的功能,添加摄像机,碰撞体等等课程内容2-2 21:08 笛卡尔的标准坐标轴,X轴始终是前后,Y轴始终是左右,Z轴始终是上下课..

2022-06-25 17:03:37 841 1

原创 C++信号

首先什么是信号(signal),基本可以理解成改变程序流程的一个东西信号是一种软件中断,一种向进程传递有关其他进程,操作系统和硬件状态的信息的方法。信号是一种中断,因为它可以改变程序的流程。当信号传递给进程时,进程将停止其执行的操作,处理或忽略信号,或者在某些情况下终止,取决于信号。几种常用信号SIGINT 2 表示信号中断的意思SIGILL 4主要用于检测非法指令SIGSEGV 11表示非法访问内存SIGTERM 15 表示发送到程序的终止请求SIGBREAK 21 表示

2022-05-27 10:08:52 772

原创 C++STL

STL主要包括这三个部分然后第一节这边就简单教了一下通过迭代器来遍历输出数的两种方法,一个while,一个forwhile (v != array1.end()) { cout << *v << endl; v++; } /*打印*/ for (vector<int>::iterator It = array1.begin(); It != array1.end(); It++) { cout << *v <&

2022-05-21 18:44:38 525

原创 预分配和多维内存

堆和栈堆区内容需要手动释放,栈区不能手动释放。释放的化,会报错。malloc和new的区别1.new会自动分配空间,malloc需要手动分配空间且返回类型是void*需要自己区修改2.new,delete会调用析构构造函数,mallocfree不会3.new是从自由存储区获得内存,malloc从堆中获取内存;构造函数不能用virtual来写,析构可以加virtual,然后在析构的时候就会走子类析构。如果是指针指向一个一维数组,delete []p,得加个括号如果是个二维数组,

2022-05-20 18:24:58 265

原创 C++IO风格输入输出流

有这三个输出的写法,cout,clog,cerr这三个。cout可以直接输出到磁盘里clog和cerr的差别在于,cerr是直接输出的,clog还会进行缓存。读写文件创建并写入文件 char buffer[1024]; ofstream file; file.open("ok.txt",ios::app);//这边这个ios::app是表示追加的意思,如果还要添加内容追加到后面 cout << "开始写入信息" << endl; cin.getli

2022-05-19 12:18:47 258

原创 蓝图射击游戏(未完)

一.将自定义的模型将其设成可移动。1添加摄像机,还有弹簧组件2然后新建一个图标,开始设置自定义模型的移动上面这一块是用来设置物体可以上下左右移动的这个是用来设置鼠标上下左右移动的 ,每一帧来进行判断...

2022-05-09 21:17:36 651

原创 git架构

因为要上高级宏替换和类模板设计收发协议框架这节课的前置得学git架构,先来学一下git架构在git bash的几个指令git init对文件进行初始化,git status对文件进行状态检测,git add 文件名 表示的是对某一文件夹进行控制,其他文件先不控制。(被控制的文件会呈现绿色,未被控制呈现红色),如果想把所有的文件都管理起来,则是git add.。因为是版本控制器最后肯定要生成一个版本,生成版本的写法是git commit -m'版本名'(这个时候如果第一次使用git可能会出现这样的问.

2022-05-08 21:10:39 351

原创 【无标题】

git架构git是一个做版本控制的软件,进行版本控制有很多好处。然后现在一般都是采取分布式存储,分布式就相当于有一个中心库,但是每个个体上仍然保存着数据。

2022-05-07 21:13:25 48

原创 模板高级运用

结合着继承,这边加了个模板。模板是支持虚函数,指出多态的。跟普通虚继承调用没有什么太多的差别,多了一步前面补上一个类型然后和正常一样,创建基类指针指向派生类的对象或者新开辟的空间。template<typename T>class A {public: virtual void test() { cout << "1"; } T *p;};template<typename T>class B :public A<int>{pu

2022-05-06 21:20:03 378

原创 八股文(五)

左值和右值概念的区别1.左值一般是等号左边相对应的右值就是等号右边。左值一般那几个固定类型的,比如int、float等等具有持久的状态,右值一般是临时创建的比如函数的返回值int func(),等等一般都是临时创建的。2....

2022-05-05 16:53:18 681

原创 八股文(四)

各种关键字const1首先知道const修饰符用来定义常量,具有不可变性 。2然后还有引申出底层const和顶层const的概念,指针本身是个常量,指向的对象是常量,这样就有了顶层指针和底层指针的概念。顶层的const表示的是指针本身无法被修改位置,只能指向这个对象,底层的const表示的是指针指的对象是是常量,无法被修改值。int i = 0;int *const p1 = &i; // 不能改变p1的值,这是一个顶层constconst int ci = 42; // 不能改变

2022-05-03 21:04:57 2014

原创 八股文(三)

几个关键字const_cast作用是去掉const,这个const_cast用来去除string类型的const然后再修改string值输出的时候输出的是修改后的值,但是如果去除了int类型的const再修改int值,输出的仍是修改前的值,这里其实int底层内存已经被修改了,但是字符表存放的仍然保存的是以前的值。换成高级的说法就是,只能改变对象的底层const(顶层const,本身是const,底层const,指向对象const)。const_cast且只能用于指针或引用,因为只有通过这两个才能修改

2022-05-02 21:34:01 125

原创 算法(一)

数组是一块连续的内存空间,数组优点是可以快速定位下标,缺点是在插入数字的时候需要大量其他数字的移动,还有一个是需要自己开辟空间,自己开辟空间就可能不够或者浪费大量空间。链表是这样的相比较数组,链表是非连续的内存空间。链表的优点是便于修改数据,方便插入和修改元素只需要修改指针。缺点就是效率较低,还要多一块指针域的开销。链表还分成很多类型,单向链表,双向链表,循环链表等等 ,拿到链表第一个元素就拿到震哥哥链表未完待续 ........

2022-05-01 21:24:01 570

原创 八股文(二)

C++内存模型C++内存分为5个区域:堆 heap :由new分配的内存块,其释放编译器不去管,由我们程序自己控制(一个new对应一个delete)。如果程序员没有释放掉,在程序结束时OS会自动回收。可能存在的问题是“缓冲区溢出”、“内存泄露”栈 stack :是那些编译器在需要时分配,在不需要时自动清除的存储区。存放局部变量、函数参数。存放在栈中的数据只在当前函数及下一层函数中有效,一旦函数返回了,这些数据也就自动释放了。全局/静态存储区 (.bss段和.data段) :全局和静态变量被

2022-05-01 17:00:14 218

原创 八股文(一)

虚函数首先,有一个概念叫做虚函数表,虚函数表和虚函数的关系是​当一个类在实现的时候,如果存在一个或以上的虚函数时,那么这个类便会包含一张虚函数表。而当一个子类继承并重写了基类的虚函数时,它也会有自己的一张虚函数表,也叫Virtual Table,这个表的功能是解决了继承和覆盖的问题(像下图中的g函数就被覆盖了)。产生虚函数表的时期是当一个类中至少存在一个虚函数的时候在编译期间就会生成虚函数表。在虚函数表中,也就是这个伪代码中的成员变量被称作虚函数表指针,virtual table pointer..

2022-04-30 17:09:00 726

原创 攀爬系统蓝图

蓝图人物的character movemen里,有个旋转朝向运动 还有个在类默认值里的 pawn下面的使用控制器旋转yaw。这两个通常开一个就行,一个是根据控制器 ,一个根据人物,没有太对要求一般旋转控制器里打开.可以在camera组件里调整目标臂长度来调正视角,插槽偏移修改摄像机位置左右调整这个比率范围可以调正动画的帧数快慢后面再把这个根运动打开,根运动就是简单来说就是会把物体一直撤回来,通过碰撞体然后将这个根运动模式调整成,动画首帧这个根运动锁定的几个选项的意思是..

2022-04-29 18:35:40 279

原创 4.29C++

new 用来开辟对象的时候,编译器会将这个步骤分成三步,第一是分配内存,第二部是转换类型,第三步是构造函数,动态分配存入初始值。先分配空间,在分配初始值。delete和new相反的,但只有两部步,第一步析构函数,将 值删除,第二部,删除指针本体。这边有一篇不错的文章,讲的是new和malloc的面试考点https://blog.csdn.net/nie19940803/article/details/76358673?ops_request_misc=%257B%2522request%255Fid

2022-04-29 17:21:33 931

原创 【无标题】

洛谷这道题少考虑了约分的情况,加个函数就行了,可以辗转相除,也可也用递归的方法,不过VS17好像不支持使用__gcd函数 。递归求最大公约数的方法int fun(int m, int n) { if (n == 0) return m; return fun(n, m%n);}也给了个提醒,以后测试数据的时候多测试一下特殊的数据。第二题刚开始思路错了,想着从周数角度出发,但没必要分得那么复杂,直接把6,7拿掉后,新一周从0 开始计算就行了#include&lt.

2022-04-29 10:05:59 72

原创 【无标题】

遍历任意参数,也就是 遍历...的方法#pragma once#include<iostream>using namespace std;template<typename T>void printarg(T &arg) { cout << arg;}template<typename ...Pramtype>void Func(Pramtype &...Param) { /*char arr[] = { (

2022-04-28 16:33:08 55

原创 4.26c++

今天碰到了个泛化和特化,偏特化几个概念特化,就是只让某个类型的通过,偏特化,让某种类型优先通过,泛化就是模板的意思下面这个例子就是一个类的偏特化,优先走第二个类的定义//头文件里class DefaultAllocator {};class MyAnotherAllocator {};template <typename T, typename Allocator_T>class MyVector {public: MyVector() { std::

2022-04-27 09:50:15 73

原创 4.25C++

函数单列什么是单列,单列是设计模式中的一种主要用途是保证在整个程序中,指定的对象只创建一次,用到的始终都是同一个对象。保证只要这个实列。下面就是个单列案列,get()这个函数传进来,如果Instance有值了就直接返回,如果没有就重建,保证始终是一个对象下面创建了一个单列...

2022-04-25 21:34:54 871

原创 4.24c++

C++部分cpp就是把C++和.h头文件放到一起的一个东西。也是方便解决模板的问题,写在同一个下面,调。调用类模板里的函数的时候,如果声明函数和函数的实现写在两个文件下,就会报错这里继承关系,如果继承的父类是个模板类,则在继承的时候要写出自己的接收类型...

2022-04-24 22:39:01 600

原创 【无标题】

今天学习模板之所要要使用到模板是因为,如果像下面这样每次来创建一个类然后存放不同类的化,还要放不同数据类型的数据的化,就会很麻烦,维护起来也很麻烦那如果使用了容器,则会变得很简单,每次要变换成不同类型的容器,只需修改容器存放的类型------------------------先来做了一下洛谷的这道题首先犯了一个错,就是没有审题清楚,刚开始改了几次。然后就是后面打点进行测试的时候才发现了问题,输入它要求输入一个数量,一个价格,我写成一下子把三个数量值都先输入了。这道题更简洁的是直接使用.

2022-04-23 22:17:02 150

原创 蓝图(未写完)

先创建一个panw类,pawn类的作用是可以对玩家来进行控制。然后创建poseable mesh这个组件的作用是后面可以来进行骨骼绑定,springarm和camera组件,springarm组件的作用是可摄像机的位置,更灵活的显示玩家。然后调整摄像机延迟速度然后调整diver的碰撞预设,改成physical actor然后打勾这个物理模拟,之所以要打勾这个物理模拟是因为后面需要扭转这个蓝图接着再在项目设置里调整一下输入默认值----------------...

2022-04-22 21:44:57 184

原创 4.22C++

人宅简单讲了一下,dll,lib,exe,pdb三者的区别,dll是动态链接库的意思,在程序运行的时候会链接到目标代码,且是二进制运行起来较快,lib静态连接库在程序编译时链接到目标代码,exe比较高级包含了dll且可以在操作系统直接运行在函数末尾加上const ,则这个函数可以被访问但不能被修改。还有另外一种强转的方法,const_cast<>(),<>里面放指针,()里面放着指针类型,这个的功能是去掉const还有一种就是C风格的强转,虽然万能但是还是少用,避免出

2022-04-22 21:43:56 874

原创 4.21C++

lambda类函数,重复次数少,使用次数高。lambda类函数的使用方法是可以是这样的下面的声明以及调用是这样,使用&上面类中所有的信息都是可以访问到的,然后红色线下面哪个部分就是来实现lambda类函数的实现还可以添加lambda类函数的返回类型...

2022-04-21 21:11:46 434

原创 【无标题】

接着前面的重载重载符,下面这个是使用自加的重载操作这里即使什么参数都不传,仍然要放入类型之所以可以直接在后面自加的原因是,printcout这边已经被当成是类里面的成员变量来用很多运算符都是类重载,只要.* ->* :: siezeof ?: #重载,C语言不支持,C++支持。这边也算是再强调了,静态函数在调用的时候前面要加个作用域。下面这个重载加了一个继承的关系,子类要想调用父类,得加个作用域...

2022-04-20 21:23:25 39

原创 【无标题】

今天重新学了重载操作符,之所以要重载操作符是为了方便程序来对自定义的变量输出表达。基本样式就是这样namespace assethello { class fistream {// 定义一个输入输出流类 public: fistream() { memset(&m_string, 0, 1024);//memset的函数是将这个内存块里的成员全部设成1024 } fistream& print() {//这个fistream&表示的是返回类型是自己

2022-04-19 21:14:42 49

原创 【无标题】

浅拷贝就是直接进行赋值,写法就是 A D(C); (A是类名,D是已经初始化过的一个对象,C是要被赋值的对象)。但是浅拷贝会出现的问题是,当拷贝的对象里面有指针的时候,在析构的时候就会出现重复释放的问题。可以理解为a,b对d,f进行的就是浅拷贝。而且因为是指针都指向同一块内存空间。而析构的时候,当第一个指针e中地址所在的空间被释放了,下面f又要释放一次时就会出错。要解决这个问题,就是用深拷贝。自己来写一个构造函数。class A{public:int a;int b;A *t3

2022-04-18 22:33:05 39

原创 硬核C++系列第二天

今天跟着课程学习了友元和析构的一些知识友元友元包括两种,友元类、友元函数,不管是类还是函数都是在前面加个friend。UE4里面会有大量友元。封装起来很好用.友元函数也可也对自己来使用,讲师在这里就采取了这样的例子。对自己使用有个好处可以方便来调用,坏处就是破坏了它的封装性。#include<iostream>using namespace std;class T3{public: friend void count(T3&T) { ...

2022-04-17 18:21:10 509

空空如也

空空如也

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

TA关注的人

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