首页
文章列表
标签墙
返回找工具啦
移动语义
共 11 篇文章
C++ std::move_if_noexcept在强异常保证中的应用
2026-05-20 00:11:04
C++ std::moveifnoexcept在强异常保证中的应用 理解异常安全与强异常保证 在C++编程中,编写“异常安全”的代码意味着当程序抛出异常时,代码能保持程序状态的一致性和资源的正确释放。其中,“强异常保证”是最高级别之一,它要求:如果一个操作因异常失败,程序的状态应完全回滚到该操作开始
C++异常安全
强异常保证
std::move_if_noexcept
20
0
C++智能指针unique_ptr为什么不能复制只能移动
2026-05-18 18:10:56
C++智能指针uniqueptr为什么不能复制只能移动 uniqueptr 是 C++11 引入的一种智能指针,其核心设计目标是独占所有权。理解它为什么禁止复制、只允许移动,是安全、高效使用它的关键。本文将手把手拆解其设计原理与正确用法。 第一步:理解所有权模型 在计算机中,“所有权”管理着资源的生
C++智能指针
unique_ptr
所有权模型
27
0
C++ std::exchange在实现移动操作中的惯用法
2026-05-09 00:41:22
C++ std::exchange在实现移动操作中的惯用法 std::exchange 是 C++14 引入的一个实用工具,它允许你原子性地替换一个对象的值,并返回被替换前的旧值。这个看似简单的功能,在实现 C++ 的移动语义时,能够极大地简化代码,提升安全性和可读性。 认识 std::exchan
C++
exchange
移动语义
42
0
C++ emplace_back比push_back快在哪里
2026-05-02 11:14:38
C++ emplaceback比pushback快在哪里 pushback 和 emplaceback 的核心区别在于:是否在内存中“搬运”对象。理解这一点,就能明白为什么 emplaceback 更快。 理解核心区别:搬家 vs 现场组装 要把一件家具放进房间,有两种方法: 1. pushback
C++
STL
vector
44
0
C++移动构造函数什么时候会被调用
2026-04-29 18:14:05
C++移动构造函数什么时候会被调用 移动构造函数是 C++11 引入的重要特性,主要用于提升性能,避免不必要的深拷贝。当对象持有堆内存、文件句柄等资源时,使用移动构造函数可以直接“窃取”临时对象的资源,而非复制一份。 以下通过具体代码实例和场景分析,详细说明移动构造函数的触发时机。 1. 准备测试类
C++
移动构造函数
C++11
39
0
C++右值引用与std::move到底做了什么
2026-04-28 02:21:53
C++右值引用与std::move到底做了什么 C++ 11 引入的右值引用与 std::move 常常让人困惑。很多代码中到处充斥着 std::move,但性能提升却不明显,甚至有时还会导致程序崩溃。这通常是因为没有理解其背后的机制:移动语义的本质是“资源的窃取”,而不是“数据的复制”。 1. 理
C++
C++11
右值引用
63
0
C++ std::move_iterator与std::make_move_iterator的用法
2026-04-27 08:23:09
C++ std::moveiterator与std::makemoveiterator的用法 在 C++ 开发中,处理大量数据或包含动态资源的对象(如 std::string、std::vector)时,深拷贝往往会带来巨大的性能开销。为了避免不必要的拷贝,C++11 引入了“移动语义”。通常我们使
C++
移动语义
迭代器
40
0
C++ 移动语义与完美转发在工厂模式中的应用
2026-04-07 07:23:57
C++ 移动语义与完美转发在工厂模式中的应用 传统工厂模式在创建复杂对象时,经常产生不必要的临时对象拷贝,导致性能损耗。结合 C++11 的移动语义与完美转发,可让工厂函数实现“零额外拷贝”且“参数透传无损”的高效对象构建。以下步骤将手把手教你重构工厂代码。 1. 明确资源转移与参数透传底层机制 理
移动语义
完美转发
工厂模式
94
0
C++ 移动语义在返回值优化中的应用
2026-04-07 06:12:40
C++ 移动语义在返回值优化中的应用 编写高效的 C++ 函数返回逻辑,核心在于让编译器自动消除多余的内存拷贝,并在无法消除时以最低成本移交数据所有权。按照以下步骤,逐步配置代码结构,确保移动语义与返回值优化协同工作。 阶段一:厘清优化触发条件 1. 理解 返回值优化的底层逻辑。该机制是编译器在后台
C++
移动语义
返回值优化
66
0
C++ 智能指针:unique_ptr、shared_ptr、weak_ptr
2026-04-07 05:08:33
C++ 智能指针:uniqueptr、sharedptr、weakptr 引入 标准库头文件 include <memory。配置 编译器编译标志启用 C++11 或更高标准(例如 GCC/Clang 使用 std=c++11,MSVC 使用 /std:c++14),确保基础语法可用。 阶段一:依据
智能指针
内存管理
引用计数
76
0
C++右值引用与移动语义优化内存拷贝详解
2026-04-02 02:25:25
C++右值引用与移动语义优化内存拷贝详解 C++11 引入的右值引用和移动语义,解决了传统拷贝操作中不必要的内存分配与数据复制问题。当你频繁创建临时对象或转移大型资源(如动态数组、文件句柄)时,这套机制能显著提升程序性能。 理解左值与右值的本质区别 区分一个表达式是左值还是右值,关键看它是否拥有“身
C++11
右值引用
移动语义
82
0