跳至正文

默认和删除函数(C++11)笔记

  • 算法

类的特殊成员函数

在C++中定义一个类,会默认生成以下6个成员函数:

  • 默认构造函数
  • 析构函数
  • 复制构造函数
  • 复制赋值运算符函数
  • 移动构造函数(C++11 新增)
  • 移动赋值运算符函数(C++11 新增)

这些功能很实用,在我们直接定义一个类之后,能够直接互相拷贝,而不用为了编译器语法的原因一定要写一遍这些函数。

但是它也有一些潜规则:

  • 声明任何构造函数都会抑制默认构造函数的添加。
  • 一般用自定义的构造函数替代默认构造函数,类就会转化为非平凡类型。

非平凡类

什么是平凡类什么是非平凡类呢?
这里的概念是出自C语言[……]

继续阅读

Hazel视频笔记 —— 预编译头文件

视频内容

刚开始我以为up就是想把所有的系统级头文件合并在一个.h里然后引用,还在想这有什么意义,好看一点?

看到改CMake直接使用了一个pchheader才知道,这里有东西的!!

预编译的头文件

PCH文件是一个预编译头文件(pre-compiled header),它的后缀是PCH,所以也叫PCH文件。编译器会将头文件的内容事先编译成二进制的中间文件,在整个编译过程中,只编译一次,并且有缓存,除非有变化,否则不会重新编译(每个引入的.h和.cpp)文件,从而大大提高编译速度。

每个源文件只能使用一个预编译的标[……]

继续阅读

Hazel视频笔记 – EventSystem

  • 技术

介绍

最近开始听Youtube上一个大佬自研引擎的开发全过程,本篇是我做的笔记。

事件集中定义

这篇视频介绍了他对于EventSystem的初步规划和开发,首先我因为用python很多,很习惯于不提前把一切事件都定义好,EventSystem就应该是外部可以定义Event,并且可以发布Event。

但是他这里做的事情是,定义好了所有的Event,有好有坏,好处呢是所有的事件集中在Event.h的里面,但也有坏处的,坏处就是如果我想增加事件必须要修改引擎的代码,或者要新开发一个Delegate的系统。[……]

继续阅读

函数式编程 记录

  • 技术

函数式编程范式则认为:函数也是一种变量,函数可以作为另一个函数的参数!

通常来说,软件应当追求低耦合度,适度解耦的软件能更快适应需求变化。但过度的低耦合也会导致代码过于分散,不易阅读和修改,甚至可能起到反效果。

[……]

继续阅读

读书笔记《现代C++语言核心特性解析》 | 前五章

介绍

是一本介绍C++11到C++20特性的书籍。
越来越多的项目迁移到了更新的标准上,毕竟带来了新的好用的特性,而且性能依然非常的高,需要学习一下。

不会大而全的记录,主要会是让我有所醒悟的内容。

基础类型

整型

新增了long long表示至少64位的整数,对应的还有LL和ULL的后缀。

long long x = 65536LL;
unsigned long long x = 65536ULL;

整型上限:

std::numeric_limits<long long>::min()
std::nu[......]

继续阅读

2024年学习记录

记录

一方面是持续提升自己,让自己未来在能够接到更重的工作的时候能够胜任;另外一方面也就是持续的学习,保持自己的竞争力,别哪天真的没工作干了。
作为技术人员,一方面要拥有很核心的技术,深度要深,广度要广,而且要持续跟进最新的知识,有持续的产出,所以,一方面努力学习,一方面努力写代码。

链接:
https://cpxwidm62n.feishu.cn/base/HRiqb4hAga8J77smUATcc8qenme?from=from_copylink

[……]

继续阅读

梳理python的import

  • 随笔

最近公司出了一个bug,我有点不太懂python循环import会发生什么,也不知道python是怎么处理的,周末顺着文档缕了一遍python的导入系统。

官方导入系统的文档:https://docs.python.org/zh-cn/3.12/reference/import.html
本文主要是记录一些细节、自己的理解以及一些注解。

基本介绍

import

import: import语句包含了两个操作:

  1. 它先搜索指定的模块,如果不存在会创建改模块;
  2. 然后将搜索结果绑定到当前作用域中;

展开来说,就是imp[……]

继续阅读

论抽象还得是C++

最近刷leetcode挺多的,在学算法的同时,还通过其他人的代码学了不少C++新标准的东西。
今天看到Split和Join,轮抽象还得是C++啊。
实现Split是很多语言都有的基础功能,C++迟迟没有推出,是因为有杠精觉得为什么一定要用std::vector呢?不能用std::list吗?
然后这次标准推出了一个新的抽象对象,View。

类似于python迭代器的一种抽象,包含了一个Ranges的一些信息,但是又没实例化。

论抽象还得是C++

[……]

继续阅读

游戏中AOI的思考

  • 技术

AOI的概念

AOI(Area Of Interest),通常是指服务端对玩家感兴趣领域的划分的技术。
这个技术的应用场景是服务端存在非常多的单位,客户端不需要渲染所有的单位,服务端也可以避免将所有单位的信息广播,所以其目的是降低客户端的渲染压力、减小服务端的带宽压力。

这个问题的指导思想就是:世界很大,我只看眼前,我只关注周围的单位,太远的单位我并不关心。

好久之前有一个小朋友问过我,背那些算法和数据结构的八股文有什么意义,我当时跟他说,这是你翻身的武器,我们不要文凭,不要出身,只要你能背下八股文就能给你高薪的工[……]

继续阅读