跳至正文

C++ 11/17强枚举类型读书笔记

  • 技术

强枚举类型

原来继承自C语言的枚举类型在C++之父看来是一个奇怪且半生不熟的概念。

枚举的弊端

虽然枚举类型可以避免A类型赋值给B类型,但是:

  • 可以直接跨枚举比较
  • 可以直接转化为int
  • 同名的枚举值是冲突的

虽然有很多缺点,但依然是建议使用枚举而不是const int来做枚举,那样问题只会更多。

强枚举类型

C++11标准增加了强枚举类型,为了保证老代码的兼容性,同时也兼容了旧的特性,新增的枚举类型具有三个特性:

  • 枚举标识符属于强枚举类型的作用域。
  • 枚举标识符不会隐式转换为整型。
  • 能指定强枚举类型的底层类型,[……]

    继续阅读

默认和删除函数(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++

[……]

继续阅读