C++补完计划
文章平均质量分 91
补充项目中使用的C++知识,包括C++11以后的特性,模板等。
Grant的指针
博观约取
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 内存模型与Memory Order深度解析
摘要:本文深入探讨了C++内存模型与Memory Order在多核处理器环境下的关键作用。从硬件层面分析了Store Buffer和Invalidate Queue导致的指令重排问题,详细解读了C++11提供的六种内存顺序语义及其硬件对应关系。通过SpinLock实现展示了acquire-release的典型应用模式,并以无锁队列为例,结合硬件交互流程图解构了内存屏障在多核间的同步机制。文章为高性能并发编程提供了从理论到实践的完整指导,特别适合需要编写无锁数据结构的开发者。原创 2025-12-17 17:45:59 · 1219 阅读 · 0 评论 -
从move和forward到完美转发(深度 !!)
摘要:std::move和std::forward虽然底层都是static_cast,但行为差异显著。std::move通过remove_reference无条件转为右值引用,强制资源转移;而std::forward利用引用折叠规则,根据模板参数_Tp智能保留原始值类别(左值/右值)。前者用于明确移动场景,后者用于完美转发参数。理解这一区别是掌握现代C++移动语义的关键。原创 2025-12-12 11:23:04 · 735 阅读 · 0 评论 -
理解现代C++ (七) 类的六大特殊函数(深度,体系化)
析构的平凡性影响所有构造的平凡性;其它五者的平凡性各自独立;要求除了默认构造之外的其它五者必须平凡;trivial则要求全部平凡。是在没有更多信息的前提下,也能保证拷贝安全。原创 2025-09-22 15:27:40 · 899 阅读 · 0 评论 -
理解现代C++ (六) 初始化(一文搞定)
无参数初始化有两种形式:值初始化(带有()或{})和默认初始化(无()或{}前者会保证进行初始化(调用默认构造,或清零,或混合);后者只会调用默认构造(如果是平凡的,则什么都不做)。有参数初始化,可以通过()或者{}的方式进行,两者的差异在于后者更优先匹配初始化列表,以及窄向转换的约束。在不使用()或者{}的场景下,使用进行的初始化,属于拷贝初始化。如果被初始化对象是一个class类型,copy构造或move构造会被调用;在使用()或{}的场景下,在C++ 17之后,除了explicit。原创 2025-09-22 09:30:00 · 1144 阅读 · 0 评论 -
理解现代C++ (五) auto类型推演(最全版本,一文学会)
auto类型推演脱胎于模版函数的类型推演,它们的能力几乎等价(除了初始化列表的情况)。这也就意味着,其实在C++11之前,C++早就具备了auto的能力,只是没有从语法上允许而已。原创 2025-09-20 14:18:30 · 1057 阅读 · 0 评论 -
理解现代C++ (四) decltype类型推演(最简单版本,一文掌握)
本文介绍了C++11引入的decltype特性,它能够推导表达式的类型,增强泛型编程能力。decltype有两种使用方式:带括号decltype((expr))和不带括号decltype(expr)。带括号时,根据表达式类别推导类型:纯右值对应非引用类型,泛左值对应引用类型(左值引用或右值引用)。不带括号时,除直接访问变量名会返回其定义类型外,其余情况与带括号一致。这种设计既满足获取变量原始类型的需要,也支持基于表达式类别的类型推导,为C++类型系统提供了更灵活的支持。原创 2025-09-18 19:07:58 · 587 阅读 · 0 评论 -
理解现代C++ (三) 右值引用(最通俗易懂的讲解)
理解现在C++,右值引用的产生和用法原创 2024-11-26 09:30:00 · 1003 阅读 · 0 评论 -
理解现代C++ (二) 引用
理解现在C++中的引用的用法原创 2024-11-22 09:27:35 · 946 阅读 · 0 评论 -
理解现代C++ (一) 值与对象(最通俗易懂的讲解)
理解现代C++之值与对象原创 2024-11-20 20:43:38 · 1375 阅读 · 0 评论 -
C++武器库之noncopyable类
noncopybale确保资源不可复制。原创 2024-10-30 09:30:00 · 710 阅读 · 0 评论 -
C++武器库之enable_shared_from_this
std::enable_shared_from_this 和 shared_from_this 为类的成员函数提供了一种安全获取自身 std::shared_ptr 的方法,特别适用于需要在异步操作、回调函数中延长对象生命周期的场景。合理使用它们可以有效避免内存管理问题,提高程序的健壮性。原创 2024-11-04 10:00:00 · 2415 阅读 · 0 评论 -
C++武器库之default成员函数
在C++11中引入的**=default员显式地请求编译器为类生成默认版本的特殊成员函数**。这些特殊成员函数包括默认构造函数、拷贝构造函数、移动构造函数、拷贝赋值运算符、移动赋值运算符以及析构函数。使用default可以让编译器根据语言规则自动生成这些函数的高效实现,而不是由程序员手动编写。原创 2024-11-01 09:15:00 · 698 阅读 · 0 评论 -
入门C++模板编程(二) 类模板
C++模板类,也称为类模板(Class Template),是C++中一种强大的泛型编程工具。它允许程序员定义一个通用的类蓝图,这个蓝图可以被实例化为处理不同数据类型的多个具体类。通过使用类模板,我们可以编写出更加灵活、可重用且高效的代码。原创 2024-10-29 09:30:00 · 1720 阅读 · 0 评论 -
入门C++模板编程(一) 函数模板
函数模板入门技巧原创 2024-10-25 12:47:20 · 659 阅读 · 0 评论
分享