Petty C++ - std::visit
std::visit通常结合结合前文的Petty C++ - std::variant使用,是 C++ 17 引入的用于处理std::variant中的数据,并执行相应的操作。 std::visit需要两个主要参数
visitor:是一个可调用对象(lambda 函数对象)…
Petty C++ - std::variant
std::variant 是 C++17 标准引入的一种 union,std::variant 可以在一个变量中存储不同类型的数据,并保持类型安全,这是传统的 union 所不能提供的。 类型安全
使用 std::variant 可以保证任何时候都能确保访问正确的类型值…
Petty C++ - 对象切割
对象切割 Object Slicing 算是 C++ 的一个常见的多态问题。当一个派生类对象赋值给一个基类时,会丢弃掉派生部分,只保留基类对象部分,造成一些意料之外的结果。 对象切割示例
考虑下面的代码:
Copy
class Animal {
public…
Petty C++ - 算法调精 - 三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums [i], nums [j], nums [k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums [i] + nums [j] + nums [k] == 0 。请你返回所有和为 0…
Petty CSharp - .?
.?操作符是一种更安全地处理可能为 null 对象的机制,从而避免空指针异常,类似于 TypeScript,Swift 都有类似的机制。 当使用.?时,如果访问对象为 null,则整个表达式为 null 且不抛出异常,否则正常访问。
例子
Copy
public class…
Petty C++ - 左值和右值
左值是指在内存中有明确位置的对象,可以取地址。换句话说,左值是能够出现在赋值操作符左边的表达式。例如,变量、数组元素、解引用指针等都是左值。 特点:
可以取地址:左值表达式的结果是一个对象,可以通过取地址运算符&获取该对象的地址。
持久性:左值表示的对象在表达式的求值结束后依…
Petty C++ 运算符重载
在 C++ 中使用operator关键字为运算符提供不同的行为。 重载运算符允许自定义行为。
重载运算符不改变运算符的固有优先级和结合性。
Copy
type operator symbol(params)
其中,type是返回类型,operator symbol表示要重…
Petty C++ 初始化
在 C++ 中,初始化或者初始值设定(initializers)是一种设置变量或对象初始状态的表达式,经常出现在对象的创建、成员的初始化、数组赋值等上下文中。 直接初始化
直接初始化可以使用()或者{}初始化变量:
Copy
int a(10);
int b{10…
Petty C++ 构造函数
构造函数是 OOP 中一类特殊的成员函数,用于创建对象并初始化成员变量,在 C++ 中,构造函数和类相同,没有返回值。 一般在以下情况下需要自定义构造函数:
自定义类的成员初始化方式
创建类的对象时调用函数
构造函数一般时public的,但也可以被声明为protecat…
Unity Shader Learning Note 1
本文从 0 开始学习 Unity Shader 先新建一个 Unity Shader (Surface Shader)开始:
Copy
Shader "Custom/NewSurfaceShader"
{
Properties
{
_Color…
Petty C++ 模板
模板是 C++ 泛型的一种强大特性,可以应用于类、函数、变量,模板的存在使得 coder 可以编写类型无关的代码,而在编译时生成一般的类、函数和变量。 模板基本形式
模板定义了一种蓝图,以生成任何可以操作任何类型的数据的类和函数:
模板的基本形式
以常见的函数模板为例…
Petty C++ - lambda
lambda 表达式在 C++11 之后的版本中是一种定义匿名函数的简洁语法。在一些长环境下,例如 STL 算法和异步操作,使用 lambda 作为回调函数非常自然和方便,并且 lambda 和 C++ 的函数式编程特性非常契合。 基本语法
一个完整的 lambda…
图片颜色转换
一个需求是吧一张图的红色部分转换为蓝色部分,最初不思路可以是通过通道互换解决,但这可能会产生一些混合色的颜色变换。例如橙色变为紫色(黄 + 红 || 黄绿 + 蓝)。 另一种思路是色彩空间变换,在一个空间内解决不了的问题,通过坐标变换 转换到另一空间求解,再转换回来…
微信小程序逆向
整体步骤 找到需要解包的小程序
解密找到的小程序
解包
找到需要的小程序
以 Windows WeChat 为例,找到 WeChat 的存储位置
使用命令行的时候注意 WeChat Files 是有空格的,直接复制粘贴到命令行会被截断,所以需要用双引号包裹 WeChat…
Petty C++ 指针
智能指针 C++ 中的智能指针是一种用于管理动态分配的对象的指针。它们提供了自动内存管理,可以帮助避免内存泄漏和悬空指针的问题。C++ 标准库提供了两种主要的智能指针:std::unique_ptr和std::shared_ptr。
std::unique_ptr:
std…
Petty C++ - 关键字
explicit 用于修饰类的构造函数。它的作用是防止隐式类型转换,只允许显式地调用构造函数进行对象的初始化。
当一个构造函数被声明为explicit时,它将禁止编译器执行隐式的类型转换来调用该构造函数。这意味着只能通过显式地调用构造函数来创建对象,而不能使用隐式的类型转换。
下…