- 博客(18)
- 问答 (2)
- 收藏
- 关注
原创 opengl踩坑记录
location 和 layout 的核心作用就是建立一种 索引(index)和数据之间的映射关系,这样着色器可以通过索引快速、便捷地访问特定的数据。直接在绘制时将绘制模式改为GL_LINE_LOOP即可,如果想绘制一个长方形,只需要加一个顶点然后绘制模式改为GL_TRIANGLE_STRIP即可,常用的gl绘制模式。只有通过 glBindVertexArray(vao) 再次绑定 VAO,OpenGL 才会知道当前的绘制操作需要使用哪个顶点数组对象。.pro要保证有以下几个值。
2024-12-26 10:54:49
966
原创 C++随记
每一行代码后面的反斜杠 \ 是 C/C++ 中的行继续符,在 C/C++ 的宏定义中,如果一个宏的实现需要跨多行,为了保持代码的可读性,常常会将宏拆分成多行来书写。当一个子类继承了基类中的虚函数时,子类中的该函数默认就是虚函数,即使不在子类中再次显式地声明 virtual 关键字。子类对象向父类对象的转换是安全的,编译器会帮助我们进行,父类对象向子类对象做转换是不安全的,要借助dynamic_cast来进行。主要用途就是防止出现隐式调用的情况,我们的程序不应当出现不明确的行为,比如。
2024-12-24 16:55:47
303
原创 win/mac常用命令
这里写目录标题windows(powershell)macwindows(powershell)Get-ChildItem | ForEach-Object { $_.Name }:打印当前目录中所有文件的名字Get-ChildItem | ForEach-Object { $_.Name } > file_list.txt:打印到对应文件中mac
2024-09-18 16:51:50
720
原创 qt文件断点续传+nodejs搭建本地服务器
安装所需要的包,在项目目录创建一个server.js文件,并添加下面的代码,最后用。用nodjs来搭建一个本地的服务器,用qt编写程序实现文件的上传和断点续传的功能。先去安装一个nodejs,然后在文件夹中。初始化nodejs项目,启动服务器,速成参考。
2024-06-26 17:07:40
649
原创 git用法总结
当前工作区有修改,但是需要切换到其它分支做事情,可以用git栈先存起来,否则checkout时会丢失非暂存区内的内容,等切换回来后再拿出来,git栈是全局的。功能上来看都是进行分支的合并,merge会保留原来的分支结构并产生一个新的提交记录,rebase是进行变基,把一个分支的提交在处理冲突后移到另一个分支后面,HEAD 是一个对当前所在分支的符号引用 —— 也就是指向正在其基础上进行工作的提交记录,用。把暂存区的内容提交到本地仓库,然后清空暂存区用于下一次的提交。git的基本操作可以用下面的图来表示。
2024-06-25 17:57:39
1208
原创 qt基础知识
这段代码的意思就是:用parent参数(不传递的时候默认是nullptr)来指定Widget类对象的父对象,用初始化列表的方式,调用基类QWidget的构造函数并把参数parent传给它进行初始化,同时对成员变量ui进行初始化(ui对象对应着我们的界面文件)。主要用于实例对象间的通信,某个事件发生以后(比如按键按下),它就发出一个信号(类似于广播),如果希望有对象(槽)进行事件的响应,就用QObject类的connect函数把他们连接起来,实现一个事件的注册。3.自定义信号槽的使用。2.标准信号槽的使用。
2024-05-31 17:47:39
689
原创 C++命名空间、条件编译
条件编译是在构建大型项目中常用的方法,我们希望通过它来控制不同的代码段执行,或者根据不同的运行环境来运行对应环境下的代码和库。
2024-05-30 11:25:25
358
原创 QT智能指针与std智能指针性能测试
根据下表可知,独占式智能指针无论是std的还是qt中的,效率基本和裸指针一样,unique_ptr比QScopedPointer慢,推测是move操作导致的,共享式智能指针效率低,主要是维护内部引用计数导致的。产生一个3000万次的迭代,在每次迭代中进行一次指针的创建和传递,用chrono库来记录时间,测试一下不同指针的维护成本。qt6.5.3创建的控制台程序。
2024-05-30 09:57:41
440
原创 QT智能指针详解
QWeakPointer 是 Qt 库中的一种智能指针,用于在不增加对象引用计数的情况下,持有对由 QSharedPointer 管理的对象的非拥有(弱)引用。它用于管理动态分配的对象的生命周期,通过跟踪指向同一个对象的所有 QSharedPointer 实例的数量来实现。当最后一个这样的智能指针被销毁或重置时,所管理的对象也会被自动删除。在多线程环境中,如果多个线程同时对同一个 QSharedPointer 对象执行引用计数的增加和减少操作,Qt 会确保这些操作的原子性,避免了竞态条件和数据竞争。
2024-05-29 17:35:12
1952
原创 关于if,if-else的使用
本意是:如果一个数为奇数,对i执行相应的逻辑,如果是偶数的化执行另一个逻辑。但是在执行的时候预期结果和我想的不一样,问题就出在两个if的使用上,如果我想实现原有的逻辑,应该用if-else才对,因为。因此,虽然使用多个if对于代码来说可读性更好,但是涉及到对某个变量进行判断且修改的操作,应当使用if else,要区分好二者。,在上面的代码中,如果第一个条件执行后,i被修改后如果又满足第二个条件,那就会继续执行,这违背了我们的执行目标。今天在写题的时候写了这样一段代码。
2024-03-28 11:27:54
172
原创 C++强制类型转换
显式类型转换(强制类型转换)并不能解决隐式转换中可能出现的精度损失或符号丢失等问题,而是用来让程序员可以清晰地表达他们的转换意图,同时在某些情况下允许进行那些隐式转换所不允许的操作一般情况下对于初级学者来说,使用static_cast和dynamic_cast就够了,常量转换和重新解释转换就尽量避免使用static_cast:提供编译时类型转换,常规的数据类型转换用它dynamic_cast:提供运行时类型转换,主要用于多态下,基类指针转为派生类指针const_cast:用于添加或去除常量属性。
2024-03-24 15:42:11
1994
1
原创 C++必知必会 C++11实用特性
C++11开始添加了很多好用的新特性,个人认为想要真正掌握这些特性还是需要多读代码,多应用这些特性,本文只记录了一些个人用过的,并结合自己的使用体验讲了一下使用场景。
2024-03-23 20:54:58
2149
1
原创 智能指针详解
智能指针本质上来讲是一个存储指向堆内存指针的类,目的就是帮助我们管理内存,一旦使用了智能指针就就尽量使用new产生的指针,因为智能指针只维护同类型指针的引用计数,混用很容易造成内存重复释放的问题。
2024-03-23 20:53:18
887
1
原创 C++必知必会 类和对象
1.目的:避免内存泄漏,在发生多态的时候,子类析构函数如果不是虚析构,无法完成与基类指针的动态绑定,这就意味着子类的析构函数不会被调用,子类对象的空间无法正确被释放。1.浅拷贝:浅拷贝是指将一个对象的内容复制到另一个对象,但是如果有指针指向堆区内存,会出现两个指针指向同一块内存,释放时会造成堆区内容重复释放。一个类从两个基类进行继承,而这两个基类又同时继承于一个类,这样会造成子孙类中有两份祖宗类的数据成员,出现二义性和行为不一致的问题。,拥有纯虚函数的类被称作抽象类,继承抽象类的子类必须重写这个纯虚函数。
2024-03-22 23:03:34
1122
1
空空如也
virualbox新建windows虚拟机打开总是蓝屏怎么办
2022-09-20
小白想问一下怎么读取txt1中的数据啊
2021-06-15
小白想问一下第二问和第四问该怎么做啊?
2021-06-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅