一只野生的善逸
吃饭,睡觉,学习,一个单身喜欢滑板和动漫的程序员
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++笔记之编程领域的纯函数一定要有返回值吗?
纯函数(Pure Function)在编程中的定义有两个主要特点:1.相同的输入一定有相同的输出(确定性)。2.没有副作用(不修改外部状态、不读写全局变量、不进行 IO 操作等)。纯函数不强制必须有返回值,但如果没有返回值,也不能有副作用,这样的函数除了“什么都不做”之外就没有实际意义。实际开发中,纯函数一般都有返回值。原创 2025-05-14 20:11:21 · 33 阅读 · 0 评论 -
C++笔记之反射、Qt中的反射系统、虚幻引擎中的反射系统
反射就是让程序在运行的时候,通过字符串来访问对象的属性或方法,而不是在编译时就写死。比如:我们想通过"name"这个字符串,去获取或设置一个对象的name属性。Q_OBJECTpublic:private:虚幻引擎的反射是指运行时可以通过字符串等方式访问类、属性、函数等元数据,这使得蓝图、序列化、编辑器属性面板和网络同步等高级功能成为可能。反射是指通过字符串等描述在运行时访问对象的属性或方法**C++**没有内置反射,但可以通过映射和函数指针实现简单模拟Qt。原创 2025-05-05 19:48:17 · 333 阅读 · 0 评论 -
C++笔记之接口`Interface`
Interface。原创 2025-05-05 17:49:21 · 252 阅读 · 0 评论 -
C++笔记之模板与可变参数模板
【代码】C++笔记之模板与可变参数模板。原创 2025-05-05 17:11:11 · 314 阅读 · 0 评论 -
C++笔记之委托
委托delegation)是一种将任务或行为转交给另一个对象或函数处理的技术。把某些操作的实现“托付”给别人完成。经典的23种设计模式创建型(5种):单例、工厂方法、抽象工厂、建造者、原型结构型(7种):适配器、桥接、组合、装饰器、外观、享元、代理行为型(11种):责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者。原创 2025-05-05 16:15:54 · 291 阅读 · 0 评论 -
C++笔记之父类引用是否可以访问到子类特有的属性?
父类引用无法直接访问子类特有的属性或方法。如果需要访问,可以通过将父类引用转换为子类指针,然后访问子类特有的成员。原创 2025-04-11 22:41:25 · 228 阅读 · 0 评论 -
C++笔记之标准库中的std::copy 和 std::assign 作用于 std::vector
特性std::copy是否调整目标容器大小不会调整,需要目标容器有足够的空间会自动调整目标容器大小是否是专属否,可以作用于任何支持迭代的范围是的成员函数内存重新分配不会重新分配内存会重新分配内存性能高效,但需要目标容器大小已知会有额外的内存分配开销使用场景当目标容器大小已知并且已经分配好空间时使用当需要完全替换目标容器内容时使用总结建议如果目标容器的大小已经确定,并且不需要调整大小,使用std::copy。如果需要完全替换目标容器的内容,并让其大小自动调整,使用。支持assign它们是。原创 2025-02-19 21:07:19 · 447 阅读 · 0 评论 -
C++笔记之标准库中用于处理迭代器的`std::advance`和`std::distance`
是一个灵活的工具,用于在不同类型的迭代器上移动指定的距离。当不确定迭代器的类型或希望代码更具通用性时,是一个很好的选择。是一个非常有用的工具函数,可用来快速计算两个迭代器之间的距离。它可以根据迭代器的类型(输入迭代器或随机访问迭代器)自动选择最优的计算方式,从而兼顾灵活性和效率。原创 2025-02-18 23:02:34 · 198 阅读 · 0 评论 -
C++笔记之类型大小、变量大小,vector与string在栈上内存、堆上内存和总内存的关系
堆上分配的内存由决定。元数据部分的大小是固定的,与元素个数无关。的容量(capacity)可能大于实际存储的元素个数(sizecapacity通常按倍数增长,堆内存可能比实际需要的多。使用测试元数据大小。使用和计算堆内存大小。总内存 = 元数据大小 + 堆内存大小。float的大小通常是固定的(4 字节),但的总内存占用还包括元数据和动态分配的堆内存。的内存占用确实和元素个数直接相关,但也受容量扩展机制的影响。在 C++ 中,sizeof。原创 2025-02-16 23:57:01 · 253 阅读 · 0 评论 -
C++笔记之数据单位与C语言变量类型和范围
为了提高程序的可移植性,C99标准引入了固定宽度的整数类型,定义在<stdint.h>头文件中。这些类型确保了不同系统和编译器上变量类型的位宽一致性,从而避免了因为平台差异导致的溢出或数据损失问题。类型含义大小(字节)范围2 的幂次方表示int8_t8 位有符号整数1-128到127-2⁷到2⁷ - 1uint8_t8 位无符号整数10到2550到2⁸ - 1int16_t16 位有符号整数2-32,768到32,767-2¹⁵到2¹⁵ - 1uint16_t16 位无符号整数2。原创 2025-01-11 23:50:06 · 328 阅读 · 0 评论 -
C++笔记之`size_t`辨析
size_t使用场景如果需要表示大小或索引,优先使用size_t。如果需要处理负数或涉及减法运算,谨慎使用size_t,考虑使用有符号类型(如ssize_t,在 POSIX 中定义)。注意事项避免将size_t与有符号类型混用。格式化输出时,使用%zu以避免问题。编写高质量代码在循环中,若索引与数组大小相关,使用size_t。在函数参数中,若需要传递大小或长度,使用size_t。通过合理使用size_t,可以编写更加健壮、跨平台的 C/C++ 程序。原创 2025-01-06 23:01:45 · 210 阅读 · 0 评论 -
C语言笔记之`char*`、`const char*` 和 `char[]`辨析
char*是字符指针,存储的是字符数组或字符串的首地址。它可以指向动态分配的字符串、静态字符串常量或字符数组。默认情况下,char*指针所指向的内容是可修改的(但要确保它指向的内存是可写的)。是指向常量字符的指针,表示字符串内容是只读的。使用可以防止意外修改所指向的字符串内容,这是对只读字符串或常量字符串的推荐做法。char[]是一个字符数组,表示一块固定大小的内存,用来存储字符串或字符数据。数组的内容通常是可修改的,除非用const修饰。原创 2025-01-06 22:46:40 · 231 阅读 · 0 评论 -
C++笔记之尾后迭代器
1.C++笔记之尾后迭代器2.C++笔记之迭代器失效问题处理在C++中,(通常称为)是指指向容器中最后一个元素之后的位置的迭代器。它并不指向任何有效的元素,而是用来表示容器的结束边界。尾后迭代器通常通过容器的end()成员函数获取。原创 2025-01-01 23:47:31 · 353 阅读 · 0 评论 -
C语言笔记之strnlen遇到第一个‘\0‘时会停止计数导致字符串被截断吗?
strnlen遇到第一个'\0'时会停止计数,但这只是它的正常行为,不会导致字符串被截断或修改。它的作用是安全地计算字符串长度,避免超出指定的最大检查范围,从而防止访问未定义内存区域。原创 2025-01-02 00:19:40 · 130 阅读 · 0 评论 -
C++笔记之‘\n‘和‘\0‘
特性'\n''\0'含义换行符字符串的结束符ASCII 值100作用表示换行标识字符串结束常见用途格式化输出,文本换行处理字符串是否可见是(在输出中换行可见)否(是非打印字符)原创 2025-01-02 00:15:11 · 244 阅读 · 0 评论 -
C++笔记之C语言和C++中未初始化变量的默认值问题
局部变量:未初始化始终是未定义的(垃圾值)。全局变量和静态变量:始终默认初始化为零值。malloc未初始化,calloc初始化为零。原创 2025-01-01 16:07:44 · 255 阅读 · 0 评论 -
C++笔记之C++中的argv[0]和Linux bash脚本中的$0区别
argv[0]是main函数的参数列表中的第一个参数。它通常表示程序的名称或被用来启动程序的路径。在 C++ 程序中,argv[0]是一个字符串指针 (char*),可以通过它获得程序的调用名。特性argv[0](C++)$0(Bash)表示内容程序名或路径脚本名或路径数据类型字符指针 (char*字符串值的来源操作系统提供Shell 提供值是否包含路径根据执行方式,可能包含路径根据执行方式,可能包含路径特殊情况某些环境下可能为空字符串source或。原创 2024-12-29 20:34:52 · 182 阅读 · 0 评论 -
C++笔记之格式化字符串
格式化字符串是一种灵活的字符串生成方式,能够根据变量动态创建内容,同时提供多种格式化选项。不同语言提供的格式化方式略有不同,但核心思想类似:通过占位符插入变量,并可控制其格式。原创 2024-12-29 19:14:47 · 161 阅读 · 0 评论 -
C++笔记之标识符与字面量
标识符(Identifier)是用于命名变量、函数、类、方法或其他用户定义元素的名称。它是程序中指代某个实体的符号。字面量(Literal)是指程序中表示固定值的符号,即直接写在代码中的常量值。字面量通常用于表示数字、字符、字符串、布尔值等。标识符是程序中用于命名变量、函数、类等元素的名称。字面量是程序中直接表示固定值的符号。它们的区别在于:标识符是用户定义的名称,而字面量是直接使用的常量值。原创 2024-12-29 18:30:24 · 160 阅读 · 0 评论 -
C++笔记之单例模式与静态方法的使用辨析及代码规范
单例模式适合需要全局唯一实例的场景。静态方法适用于无需保存对象状态的工具类操作。单例模式中的静态方法可以结合两者的优点,既保证类的唯一性,又提供了简洁的调用方式。原创 2024-11-27 23:56:05 · 318 阅读 · 0 评论 -
C++笔记之构造函数声明只需要写明需要的参数,不需要列出所有成员变量、可以使用成员初始化列表初始化所有需要的成员变量
成员初始化列表(Member Initializer List)允许在构造函数体执行之前对类的非静态成员变量进行初始化。即使某些成员变量没有直接对应构造函数参数,也可以在初始化列表中显式赋值。如果某个成员变量既有默认成员初始化器(Default Member Initializer)又出现在成员初始化列表中,则成员初始化列表优先。成员初始化顺序(Initialization Order)严格按照它们在类中声明的顺序进行,而不是按照初始化列表的书写顺序。原创 2024-11-26 00:57:12 · 146 阅读 · 0 评论 -
C++笔记之函数入参传递std::unique_ptr 时使用 std::move的场景
这个场景适用于需要转移资源管理权的情况,例如动态分配的对象的生命周期需要交给另一个组件或函数管理。原创 2024-11-24 18:44:38 · 209 阅读 · 0 评论 -
C++笔记之智能指针shared_ptr和unique_ptr的初始化方法
优先使用和:提供更好的异常安全性和性能。避免直接使用new:除非有特殊需求,例如自定义删除器。注意所有权的转移和共享不能复制,但可以移动,表示唯一所有权。可以复制,表示共享所有权。避免重复管理同一原始指针:不要在多个智能指针中包装同一个原始指针,以防止重复释放导致未定义行为。示例代码public:MyClass() { std::cout原创 2024-11-03 15:10:00 · 171 阅读 · 0 评论 -
C++笔记之静态多态和动态多态
静态多态又称编译时多态,指的是在编译期间确定具体调用哪个函数或方法。C++中实现静态多态的常用方式包括函数重载(Function Overloading)、运算符重载(Operator Overloading)和模板(Templates)。动态多态又称运行时多态,指的是在运行时决定具体调用哪个函数或方法。C++中通过继承(Inheritance)和虚函数(Virtual Functions)来实现动态多态。原创 2024-10-17 23:01:05 · 354 阅读 · 0 评论 -
C++笔记之类的三种继承方式
私有继承主要用于实现“is-implemented-in-terms-of”关系。通过选择不同的继承方式,可以控制对象的可访问性和转换能力。但是在派生类的成员函数或派生类的派生类中可以访问基类。这是最常见的继承方式,用于实现“is-a”关系。子类对象不能在类外部隐式转换为基类对象。子类对象可以隐式转换为基类对象。子类对象不能隐式转换为基类对象。原创 2024-10-14 23:58:52 · 212 阅读 · 0 评论 -
C++笔记之原子操作
在 C++ 中,原子类型提供了对共享变量的无锁操作,确保多线程环境下的安全。这些是 C++ 中原子操作的一些基本用法,确保在多线程编程中安全地操作共享数据。是一个原子操作,用于将一个新的值赋给原子对象,并返回该对象的旧值。这两个函数用于比较并交换值。可以直接初始化原子类型,使用标准库中的。经常用于循环中,以处理可能的伪失败。假设有两个相同类型的原子变量。原创 2024-10-08 01:26:50 · 332 阅读 · 0 评论 -
C++笔记之shared_ptr的reset()函数
的reset()函数用于管理指针的生命周期。原创 2024-10-08 00:56:34 · 271 阅读 · 0 评论 -
C++笔记之标准库和boost库中bind占位符_1的写法差异
在C++中,_1和_1: 通常用于使用Boost.Bind时的占位符。在使用Boost库时,可能会看到这种用法。: 这是C++11标准库中的占位符,用于std::bind。C++11引入了标准库版本的bind,因此需要使用命名空间中的占位符。原创 2024-10-05 17:07:29 · 260 阅读 · 0 评论 -
C++笔记之类间传参的方法
定义一个全局函数,该函数接受一个类的对象作为参数,并在函数内部调用另一个类的方法,将参数传递给该方法。定义一个全局变量,在一个类中设置该变量的值,然后在另一个类中访问该变量的值。将其中一个类设计为单例类,提供一个静态方法来获取该类的唯一实例。在另一个类中,通过调用单例类的静态方法来获取实例,并调用实例的方法传递参数。定义一个中介者类,该类知晓两个类的存在,并提供方法来协调它们之间的交互。两个类都持有中介者类的指针或引用,并通过中介者类来传递参数。一个类作为被观察者,另一个类作为观察者。原创 2024-09-17 00:56:54 · 439 阅读 · 0 评论 -
C++笔记之子类初始化时父类带参构造函数的处理、父子类中模板参数的传递
在 C++ 中,当子类继承父类时,子类的初始化通常包括调用父类的构造函数。在子类的构造函数初始化列表中,可以指定调用哪个父类的构造函数。这个机制确保父类部分在子类构造之前被正确初始化。在 C++ 中,子类必须调用父类的某个构造函数。如果父类只有带参数的构造函数,子类就必须在初始化列表中显式调用它,否则编译会失败。如果父类有默认构造函数(无参数构造函数),子类可以不显式调用父类的构造函数,编译器会自动调用默认构造函数。原创 2024-09-15 14:20:14 · 365 阅读 · 0 评论 -
C++笔记之std::map的实用操作
的所有键和值,可以使用一个循环遍历每个键值对。在 C++ 中,你可以使用多种方式初始化。这种方法会清空原有内容,然后插入新元素。中的每个键值对,并检查每个值是否为。,并打印每个键和值。原创 2024-09-10 23:42:55 · 565 阅读 · 0 评论 -
C++笔记之在基类和派生类之间进行类型转换的所有方法
使用时,注重安全性和类型检查,适用于不确定类型的向下转换。使用时,更关注性能和已知的类型转换,适合明确知道转换是安全的场景。原创 2024-08-25 02:41:21 · 338 阅读 · 0 评论 -
C++笔记之通过CMakeLists.txt像使用boost库一样使用qt库中特有的模块来方便开发
【代码】C++笔记之通过CMakeLists.txt像使用boost库一样使用qt库中特有的模块来方便开发。原创 2024-06-20 23:59:17 · 265 阅读 · 0 评论 -
C++笔记之RegisterCallback和setCallback、以及setCallback(lambda表达式)
用于注册多个回调函数,通常在事件系统或多观察者模式中使用。:用于设置或替换一个回调函数,通常用于单一事件处理场景。原创 2024-06-19 00:15:55 · 344 阅读 · 0 评论 -
C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法
要使用std::pair,需要包含头文件。T2 second;std::pair是一个简单但非常有用的工具,适用于需要将两个相关值绑定在一起的场景。通过理解它的构造函数、成员函数和比较操作符,可以在 C++ 编程中更有效地使用它。要使用std::tuple,需要包含头文件。std::tuple是一个可变参数模板类,可以包含任意数量的元素。std::tuple是一个非常强大的工具,可以在 C++ 中存储和操作多个不同类型的值。原创 2024-06-08 15:48:27 · 776 阅读 · 0 评论 -
C++笔记之Unix时间戳、UTC、TSN、系统时间戳、时区转换、local时间、转换为字符串的方法
UTC(协调世界时)是目前国际上最广泛采用的世界时间标准。它基于国际原子时(TAI)与太阳时间(UT1)之间的差异进行调整,确保与地球自转速度保持一致。原创 2024-05-26 21:23:02 · 709 阅读 · 0 评论 -
C++笔记之在类内部和类外部启动线程传入成员函数时的不同写法
—— 2024-05-12 参考笔记:C++笔记之lambda捕获列表中的‘this‘指针假设有一个类,它有一个成员函数:1. 在类外部使用直接使用成员函数指针使用 lambda 表达式2. 在类内部使用使用成员函数指针使用 lambda 表达式比较表格这张表格展示了在类内部和类外部启动线程以及使用不同技术(成员函数指针、lambda 表达式)的对比:总结来说,选择哪种方法取决于代码的具体需求和个人的编程风格。Lambda表达式因其灵活性和简洁性通常是推荐的方式,尤其是在涉及复杂捕获逻原创 2024-05-12 19:21:29 · 299 阅读 · 0 评论 -
C++笔记之调用PCL库显示PCD文件的点云
— 2024-05-05原创 2024-05-06 01:10:45 · 380 阅读 · 0 评论 -
C++笔记之memcpy探究
结构体。原创 2024-04-28 21:40:37 · 253 阅读 · 0 评论 -
C++笔记之C++、C语言、PISIX、拿到线程函数的返回值的所有方法
— 2023-12-10原创 2024-04-21 15:34:02 · 477 阅读 · 0 评论