跳至正文

结构化绑定(C++17, C++20) 学习笔记

  • 技术

结构化绑定

在python中是能够很轻易地实现多个返回值的函数的,例如:

def return_multi_values():
  return 100, 20
x, y = return_multi_values()

但是在C++应该是会用类、结构体或者引用来实现,在C++11之后也引入了std::tuple,也可以用来实现类似的功能:

#include <iostream>
#include <tuple>

std::tuple<int, int> return_multi[......]

继续阅读

override和final说明符(C++11) 学习笔记

  • 技术

重写、重载和隐藏

重写(override)、重载(overload)和隐藏(overwrite)在C++完全不同的概念,先梳理一下区别:

重写

重写的意思更加接近于覆盖,在C++中是指派生类覆盖了基类的虚函数,这里的覆盖必须满足有相同的函数签名和返回类型,即重写是有相同的函数名、形参列表以及返回类型。

重载

它通常指一个类中有两个或者以上的函数,他们函数名相同,但是函数签名不同。

隐藏

隐藏的概念是指基类成员函数,无论是否是虚函数,当派生类出现同名函数时,如果派生类函数签名和基类不同,则基类的会被隐藏;如果派生类函[……]

继续阅读

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

[……]

继续阅读