C++新特性
文章平均质量分 89
现代 C++ 的核心版本新增部分介绍
CSDN_RTKLIB
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
static成员计数会有污染无法替换外部计数结构体
将引用计数设为静态成员变量无法实现shared_ptr的功能,因为静态成员属于整个类,所有对象共享同一计数,导致不同资源的计数互相干扰。测试显示,管理不同资源的指针会错误共享计数,引发内存泄漏和资源释放失效。正确做法是使用堆分配的独立计数(int*),确保每组资源有专属的引用计数。静态成员仅适用于全局统计场景,与shared_ptr的资源级共享需求根本冲突。原创 2026-02-03 15:01:35 · 644 阅读 · 0 评论 -
int * 代替外部计数结构体实现SharedPtr
摘要:不能将引用计数直接作为SharedPtr类的普通int成员变量,因为普通成员变量属于对象独占,无法实现多个智能指针共享同一计数的需求。正确做法是将计数分配在堆内存中,通过指针共享。错误实现会导致计数隔离、重复释放或内存泄漏。最简方案可用int*替代结构体实现基础功能,结构体仅用于扩展场景。核心原则:计数必须存储在堆上并通过指针共享。原创 2026-02-03 14:54:41 · 298 阅读 · 0 评论 -
独立简化版SharedPtr
本文提供了一个独立、精简的SharedPtr智能指针实现,移除了所有与WeakPtr相关的代码。核心特性包括:1)仅维护强引用计数;2)实现构造/析构、拷贝/移动、重置等核心功能;3)当强引用归零时自动释放资源。代码结构清晰,包含引用计数结构体、SharedPtr类实现和测试用例,可独立编译运行。重点解释了引用计数规则和关键函数,如release()统一处理资源释放,移动语义高效转移所有权等。该实现保留了shared_ptr的核心功能,适合单独学习和使用。原创 2026-02-03 14:04:49 · 207 阅读 · 0 评论 -
SharedPtr测试步骤说明
本文详细解析了自定义SharedPtr智能指针的测试函数执行过程。通过逐行分析构造、拷贝、移动和reset操作,展示了引用计数变化和内存状态。关键点包括:1) 拷贝构造共享资源时计数+1;2) 移动构造转移所有权时计数不变;3) reset会释放旧资源并绑定新对象;4) 引用计数为0时自动释放内存。测试验证了SharedPtr能正确管理资源生命周期,避免内存泄漏,体现了智能指针的核心机制。原创 2026-02-02 22:02:06 · 685 阅读 · 0 评论 -
unique_ptr、shared_ptr、weak_ptr简易版实现记录
本文介绍了C++智能指针的实现原理与代码实现。通过RAII机制管理资源生命周期,分别实现了独占式智能指针(unique_ptr)、共享式智能指针(shared_ptr)和弱引用智能指针(weak_ptr)。unique_ptr禁止拷贝仅支持移动,实现资源独占;shared_ptr通过引用计数实现资源共享;weak_ptr作为观察者解决循环引用问题。文章详细展示了各类智能指针的核心代码实现,包括构造函数、析构函数、移动/拷贝操作等关键方法,并解释了引用计数的管理机制。该实现可作为理解智能指针工作原理的参考示例原创 2026-02-02 22:00:41 · 320 阅读 · 0 评论 -
MyUniquePtr解引用运算符operator*和箭头运算符operator->
本文展示了如何为自定义智能指针MyUniquePtr重载解引用运算符operator*和箭头运算符operator->,并通过完整测试案例验证其功能。关键点包括: operator*返回对象引用,支持*ptr直接访问对象成员; operator->返回裸指针,实现ptr->member的简洁语法; 测试案例通过Person类验证了两种运算符的读写操作,包括成员函数调用和变量访问。运行结果清晰展示了智能指针自动管理生命周期的特性,最终在析构时正确释放资源。原创 2026-01-31 22:39:32 · 847 阅读 · 0 评论 -
简化版unique_ptr说明其本质
摘要:独占指针(unique_ptr)的核心实现基于禁用拷贝构造/赋值运算符,并实现移动构造/移动赋值,通过资源所有权转移实现独占性。其原理包括:1)构造函数接管裸指针所有权;2)禁用拷贝保证独占;3)移动构造/赋值转移所有权并置空原对象;4)析构函数自动释放资源(RAII机制);5)重载运算符模拟指针行为。伪代码展示了模板类如何通过=delete禁用拷贝,用右值引用实现移动语义,确保资源唯一所有权且可安全转移,体现了移动语义是独占指针实现的关键。原创 2026-01-31 21:27:21 · 677 阅读 · 0 评论 -
智能指针使用场景
C++智能指针通过RAII机制自动管理内存,解决裸指针的常见问题。C++11提供了三种智能指针:unique_ptr(独占所有权,轻量高效)、shared_ptr(共享所有权,引用计数)和weak_ptr(弱引用,解决循环引用)。选择原则是优先使用unique_ptr,仅在需要共享时用shared_ptr。unique_ptr适用于工厂模式、类成员资源管理、多态容器等场景;shared_ptr用于共享资源或跨作用域共享对象;weak_ptr主要解决shared_ptr的循环引用问题。原创 2026-01-30 23:42:43 · 798 阅读 · 0 评论 -
auto product = createProduct();合法性
摘要:unique_ptr禁止拷贝但允许移动语义,函数返回的临时unique_ptr(右值)会触发移动构造或返回值优化,而非拷贝操作。auto product = createProduct()合法是因为函数返回的右值通过移动语义转移所有权。显式拷贝具名unique_ptr会编译失败,必须用std::move转移所有权。C++14的make_unique比直接new更安全高效。unique_ptr通过禁用拷贝、支持移动实现了独占所有权与灵活转移的平衡。(149字)原创 2026-01-29 11:19:30 · 406 阅读 · 0 评论 -
C++临时物化
本文解析了C++17引入的临时物化机制,详细阐述了prvalue到glvalue的转换规则。原创 2026-01-23 10:19:21 · 647 阅读 · 0 评论 -
std::move 详细介绍
摘要:std::move是C++11引入的类型转换工具,用于将左值转换为右值引用以触发移动语义。原创 2026-01-22 23:21:16 · 376 阅读 · 0 评论 -
对象类型转换与引用类型转换
C++中的类型转换分为对象类型转换和引用类型转换,二者在实现机制和应用场景上有本质区别。原创 2026-01-22 23:16:38 · 399 阅读 · 0 评论 -
临时对象产生与值类别范畴
C++中的临时对象是编译器自动创建的无名对象,主要用于表达式求值、类型转换和函数调用等场景。原创 2026-01-22 22:05:50 · 459 阅读 · 0 评论 -
临时对象与prvalue/xvalue关系
摘要:本文澄清了C++中临时对象与纯右值(prvalue)、将亡值(xvalue)的关系。关键区分在于:值类别是表达式的属性,而临时对象是内存实体。原创 2026-01-22 21:19:50 · 440 阅读 · 0 评论 -
std::move类型转换为什么没有临时对象
摘要(148字) 问题探讨了C++中类型转换与内存操作的关系,核心区分对象类型转换和引用类型转换的差异原创 2026-01-22 21:10:26 · 520 阅读 · 0 评论 -
std::move结果的值类别
C++中的std::move本质是将左值转换为右值引用,其结果是将亡值(xvalue)。原创 2026-01-22 20:59:04 · 295 阅读 · 0 评论 -
右值引用一个误区
本文澄清了关于右值引用的常见误解:1. std::move(a)仅转换类型不创建新内存;2. 右值引用b直接绑定到a的内存地址,两者共享同一内存;3. 生命周期延长仅适用于临时对象,对已存在的左值无效。原创 2026-01-22 20:47:54 · 489 阅读 · 0 评论 -
智能指针使用场景
C++智能指针的核心价值在于自动资源管理和所有权明确化。原创 2026-01-06 20:54:37 · 754 阅读 · 0 评论 -
C++11/14/17新增特性介绍
摘要:C++11/14/17是现代C++的核心版本原创 2026-01-06 10:01:54 · 854 阅读 · 0 评论
分享