<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[2402_85646905的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/2402_85646905</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; 2402_85646905]]></copyright><item><title><![CDATA[【c++】智能指针工厂函数]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157479602</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157479602</guid><author>2402_85646905</author><pubDate>Thu, 29 Jan 2026 00:03:04 +0800</pubDate><description><![CDATA[C++11 引入的可变模板参数（也叫 “参数包”），允许模板接收任意数量、任意类型的模板参数，语法上用...模板参数包：class... Args（也可以写），表示 “一个包含 0 个或多个类型的参数包”，Args是参数包的名字。，表示 “一个包含 0 个或多个对应类型的函数参数包”，与模板参数包Args一一对应。简单说，...在这里的作用是 “打包”—— 将任意数量的参数打包成一个参数包，后续需要时再用...“解包”。可变模板参数（：解决了 “接收任意数量、任意类型构造参数” 的问题，适配T。]]></description><category></category></item><item><title><![CDATA[【c++】智能指针]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157463260</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157463260</guid><author>2402_85646905</author><pubDate>Thu, 29 Jan 2026 00:02:48 +0800</pubDate><description><![CDATA[底层核心思想：三大智能指针均基于RAII 机制，在析构时自动释放资源，避免手动delete；差异的核心是所有权管理方式。unique_ptr 底层：独占所有权，栈上封装对象指针 + 删除器，无额外开销，禁用拷贝、支持移动，析构直接释放对象。shared_ptr 底层：共享所有权，依赖堆上控制块存储引用计数，拷贝递增强引用、析构递减强引用，最后一个释放对象，存在循环引用和额外开销问题。weak_ptr 底层：无所有权，共享 shared_ptr 的控制块，仅跟踪弱引用计数，通过lock()]]></description><category></category></item><item><title><![CDATA[【c++】【stl】std::allocator（vector 默认分配器）]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157463199</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157463199</guid><author>2402_85646905</author><pubDate>Wed, 28 Jan 2026 04:16:39 +0800</pubDate><description><![CDATA[内存池优化：频繁小内存分配（比如 vector 频繁扩容）时，内存池可减少new/delete的系统调用开销；对齐要求：某些硬件 / 算法要求内存按 16/32 字节对齐，仅保证基本对齐；调试 / 统计：自定义分配器可统计内存分配次数、大小，排查内存泄漏；共享内存：分配器可从共享内存区域分配内存，实现进程间数据共享。std::allocator 核心职责：分离 “内存分配 / 释放” 和 “元素构造 / 析构”，vector 的所有内存操作都通过它完成；核心接口：处理原始内存（底层。]]></description><category></category></item><item><title><![CDATA[【c++】【STL】std::vector]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157463178</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157463178</guid><author>2402_85646905</author><pubDate>Wed, 28 Jan 2026 03:51:44 +0800</pubDate><description><![CDATA[核心本质：动态连续数组，兼具数组的随机访问效率和动态扩容的灵活性；核心概念size()：已用元素个数，capacity()：总容量；reserve(n)：预分配容量（不构造元素），resize(n)：调整大小（构造 / 析构元素）；扩容规则：默认 2 倍扩容，扩容时元素拷贝 / 移动，迭代器失效；关键操作（拷贝）/（直接构造）；pop_back()（尾部）/erase()（指定位置）；遍历：迭代器、范围 for、[]；性能优化：提前reserve避免扩容，优先，批量操作；避坑重点。]]></description><category></category></item><item><title><![CDATA[【c++】流（Stream）全解析：从 iostream 到输入输出核心]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157403054</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157403054</guid><author>2402_85646905</author><pubDate>Tue, 27 Jan 2026 17:13:00 +0800</pubDate><description><![CDATA[C++ 支持给自定义类重载<<（输出）和>>（输入）运算符，让自定义类型也能像内置类型一样用流操作。流的本质：数据传输的抽象，分为输入流（读）和输出流（写），接口统一且类型安全；iostream 核心cincout：标准输入输出，>><<是核心操作符；getline：读取带空格的整行字符串；good()eof()fail()检测流的健康度，clear()重置状态；进阶流sstream：内存字符串的读写，适合字符串 / 数值转换、字符串拆分；fstream：文件的读写，用法和标准流一致；]]></description><category></category></item><item><title><![CDATA[【c++】mystd::string]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157403001</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157403001</guid><author>2402_85646905</author><pubDate>Mon, 26 Jan 2026 22:59:34 +0800</pubDate><description><![CDATA[下面是mystd::string, 帮助加深印象。]]></description><category></category></item><item><title><![CDATA[【c++】std::string]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157402889</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157402889</guid><author>2402_85646905</author><pubDate>Mon, 26 Jan 2026 22:58:17 +0800</pubDate><description><![CDATA[核心优势：自动内存管理、SSO 性能优化、丰富的操作接口、类型安全；核心概念size()（实际长度）、capacity()（总容量）、npos（无效位置）、SSO（小字符串优化）；关键操作：元素访问（[]/at()）、查找（find）、替换（replace）、子串（substr）、数值转换（避坑重点：迭代器失效、npos 类型匹配、c_str () 生命周期、越界访问；性能优化：提前reserve()避免扩容、使用移动语义减少拷贝、优先用+=而非拼接。]]></description><category></category></item><item><title><![CDATA[【c++】模板特化和类型萃取]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157146087</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157146087</guid><author>2402_85646905</author><pubDate>Tue, 20 Jan 2026 00:13:16 +0800</pubDate><description><![CDATA[类型萃取（Type Traits） 是 C++ 模板元编程的核心技术 —— 简单来说，它是一套。]]></description><category></category></item><item><title><![CDATA[【c++】模板元编程]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157145885</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157145885</guid><author>2402_85646905</author><pubDate>Tue, 20 Jan 2026 00:01:52 +0800</pubDate><description><![CDATA[什么是 模板元编程（Template Metaprogramming, TMP）？。一、先搞懂：模板元编程的核心本质常规 C++ 代码是 “运行期执行”（比如int a=1+2;在程序运行时计算），而模板元编程是 “编译期执行”—— 编译器在处理模板时，会像 “解释器” 一样，执行你写的模板逻辑，最终生成一个 “确定的结果 / 类型”，运行期只需要直接用这个结果。二、模板元编程的核心特点（和常规编程对比）模板元编程和常规编程有几大核心区别：三、模板元编程的例子。]]></description><category></category></item><item><title><![CDATA[【c++】异常处理]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157065008</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157065008</guid><author>2402_85646905</author><pubDate>Sat, 17 Jan 2026 16:30:07 +0800</pubDate><description><![CDATA[我们在 throw 的时候虽然可以填写任意数据，但是为了标准化，C++标准库提供了异常家族，祖宗是std::exception 所以必须包含 #include<exception> 这个头文件。]]></description><category></category></item><item><title><![CDATA[【c++】嵌套和继承的区别]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157032187</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157032187</guid><author>2402_85646905</author><pubDate>Fri, 16 Jan 2026 22:26:03 +0800</pubDate><description><![CDATA[嵌套类是 “内部组件”，作用是封装和内聚，把强相关的逻辑藏在外部类内部，避免命名冲突，适合 “XX 是 XX 的一部分” 的场景；继承是 “父子派生”，作用是复用和扩展，子类复用父类的所有功能，同时扩展自己的特性，适合 “XX 是 XX 的一种” 的场景。]]></description><category></category></item><item><title><![CDATA[【c++】static的作用]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/157031876</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/157031876</guid><author>2402_85646905</author><pubDate>Fri, 16 Jan 2026 18:51:39 +0800</pubDate><description><![CDATA[修饰类的成员核心是让成员 “属于类本身，而非具体对象”，所有对象共享这一份资源。static 修饰全局变量 / 函数时，核心作用是。示例 2：静态常量（类级别的只读全局值）static 修饰局部变量时，核心作用是。示例 1：静态成员变量（统计对象数量）（仅初始化 1 次，函数结束不销毁）。（最常用：静态成员变量 / 函数）三、修饰全局变量 / 普通函数。（避免多文件命名冲突）。static 的作用是。]]></description><category></category></item><item><title><![CDATA[【c++】运算符重载]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/156993481</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/156993481</guid><author>2402_85646905</author><pubDate>Thu, 15 Jan 2026 21:03:59 +0800</pubDate><description><![CDATA[让自定义类能像内置类型（int/char）一样用直观的运算符操作，而非只能调用繁琐的成员函数。]]></description><category></category></item><item><title><![CDATA[【c++】移动构造函数]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/156991900</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/156991900</guid><author>2402_85646905</author><pubDate>Thu, 15 Jan 2026 20:24:55 +0800</pubDate><description><![CDATA[相比于拷贝构造更加高效，全程没有内存分配、没有数据拷贝，只做指针赋值，效率接近 O (1)。1. 对于有动态资源的类，编译器生成的默认移动构造 / 赋值是 “偷懒的浅转移”—— 只做。1. 默认构造函数，2. 析构函数，3. 拷贝构造函数，4. 拷贝赋值运算符。既然编译器会自动生成移动拷贝和移动赋值运算符，为什么我们还要手动写？尤其是大对象的时候，拷贝构造函数的效率完全比不上移动构造。2.手动写移动构造的核心价值：实现 “安全的资源转移”），编译器生成的默认移动函数足够用，无需手动写。]]></description><category></category></item><item><title><![CDATA[【c++】const的作用]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/156955948</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/156955948</guid><author>2402_85646905</author><pubDate>Wed, 14 Jan 2026 23:59:46 +0800</pubDate><description><![CDATA[最基础的用法，核心是让变量 / 对象变成 “只读”，一旦初始化就不能被赋值修改，编译器会检查并阻止任何修改操作，避免意外篡改。—— 用来限定变量 / 函数 / 指针等 “不能被修改”，既能提升代码安全性，也能增强可读性。：约束对象的 “只读属性”，确保对象状态不会被意外修改，是类设计中 “只读接口” 的基础。之前写了const在函数当中的作用，那就在写一下const的其他作用，帮助自己理解。const 是 C++ 里最基础也最关键的关键字之一，核心是。，表示函数不会修改字符串内容，提升代码安全性。]]></description><category></category></item><item><title><![CDATA[【c++】拷贝构造函数中的深拷贝和浅拷贝]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/156955393</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/156955393</guid><author>2402_85646905</author><pubDate>Wed, 14 Jan 2026 23:31:25 +0800</pubDate><description><![CDATA[在这里我们将other的size给到新对象的size，通过std::copy将原对象other的数组内容完整复制到新分配的内存中。这行代码，本质是：把 other.data 指向的数组中，从起始位置到 size 个元素的所有数据，拷贝到 data 指向的内存地址开始的位置。综上所述，std::copy是比较通用且适配所有类型的，同时标准库有一定优化，其他都是按需选择。它只拷贝字节，对自定义对象中的指针，仅复制指针的地址值，不拷贝指针指向的内容，因此是浅拷贝；（或拷贝构造），就能实现真正的深拷贝；]]></description><category></category></item><item><title><![CDATA[【c++】const加在函数的作用]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/156915200</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/156915200</guid><author>2402_85646905</author><pubDate>Tue, 13 Jan 2026 23:32:10 +0800</pubDate><description><![CDATA[函数末尾的const：修饰的是（限制this指针），表示函数不修改对象状态。这个const是用来修饰thismutableconst。成员函数的本质是隐含了一个this指针参数（比如getValue实际是），加了末尾的const后，this指针变成constconst函数前面的const：修饰的是，表示返回值是一个常量，不能被修改（仅对引用 / 指针返回值有实际意义）；]]></description><category></category></item><item><title><![CDATA[【c++】拷贝构造函数为什么必须用引用传参]]></title><link>https://blog.youkuaiyun.com/2402_85646905/article/details/156914793</link><guid>https://blog.youkuaiyun.com/2402_85646905/article/details/156914793</guid><author>2402_85646905</author><pubDate>Tue, 13 Jan 2026 23:05:48 +0800</pubDate><description><![CDATA[（包括拷贝构造、带参构造、无参构造）。一旦你自定义了拷贝构造函数，编译器就不会再自动生成无参 / 默认构造函数了。好的让我们回来理解一下为什么要加&?]]></description><category></category></item></channel></rss>