
Modern C++
文章平均质量分 87
arong-xu
一个C++程序员,主要在Linux平台编程.
个人网站: https://www.arong-xu.com
展开
-
CMake构建C++20 Module实例(使用MSVC)
C++20 引入的模块(Module)特性是一种替代传统头文件的新方案, 能解决传统 C++ 编译流程(预处理, 编译, 链接)在项目规模扩大时的诸多问题, 如冗长的预处理, 宏冲突, 头文件管理复杂等. 模块具有高效编译, 防止冲突, 清晰组织等优势. 本文从编译器对模块的支持, 构建环境讲起, 介绍模块基础(模块声明, export 命令), 并通过简单示例, 复杂示例, 模块接口, 子模块等实例, 带你逐步掌握 C++20 模块的使用方法, 助你从传统头文件世界迈入模块化新时代.原创 2024-03-27 20:46:41 · 3968 阅读 · 0 评论 -
C++26新特性解读: 结构化绑定作为条件
本文介绍C++26: 结构化绑定作为条件.原创 2025-04-01 17:32:37 · 294 阅读 · 0 评论 -
C++26 编译时反射简介
C++26引入了编译时反射功能, 允许程序在编译时观察和操作其自身结构. 反射功能通过std::meta::info类型, 反射操作符^和Splicer [: :]实现, 支持类型, 命名空间, 常量表达式等的操作. 这一功能将大大减少样板代码, 提升开发效率, 尤其在序列化, 反序列化等场景中表现突出. 文章详细介绍了反射的基本概念, 当前提案, 使用场景及示例代码, 帮助开发者更好地理解和应用这一新特性.原创 2025-03-30 23:18:32 · 1052 阅读 · 0 评论 -
最常使用的现代C++新特性介绍
介绍现代C++一些常用的功能原创 2025-03-29 17:04:10 · 649 阅读 · 0 评论 -
clang-tidy用std::format替换printf函数
本文详细介绍了如何通过 Clang-Tidy 工具将遗留 C/C++ 代码中的 printf 函数替换为更安全, 更现代的 std::format 或 fmt::format. 我们提供了安装指南, 具体配置步骤以及实际代码转换示例, 帮助开发者快速上手并优化代码质量. 此外, 还探讨了 printf 的缺陷及替代方案的优势, 助力团队实现代码现代化.原创 2025-03-20 16:08:38 · 1071 阅读 · 0 评论 -
C++基础: Rule of five/zero/three
本文详细解析了C++中的Rule of Five/Zero/Three原则, 通过实现一个简单字符串类的实例, 逐步展示如何正确定义拷贝, 移动构造函数和赋值操作符. 同时, 文章强调了Rule of Zero的重要性, 提倡尽量使用标准库工具类来简化资源管理, 减少手动定义默认操作的需求. 这些原则不仅有助于避免常见的内存管理问题, 还能显著提升代码的可维护性和性能.原创 2025-03-18 22:46:03 · 704 阅读 · 0 评论 -
C++ 返回值优化(Return Value Optimization)
本文深入探讨C++中的返回值优化(RVO), 包括命名返回值优化(NRVO)和无名返回值优化(URVO), 通过实例代码展示RVO如何提高程序性能, 避免不必要的临时对象创建. 同时, 讨论RVO的发展历程, 失效情况及与std::move的区别, 帮助开发者优化代码.原创 2025-03-16 22:32:21 · 804 阅读 · 0 评论 -
理解C++值类别(lvalue, rvalue, prvalue, xvalue)
本文详细解析C++值类别的演进与应用, 涵盖左值, 右值, 纯右值及将亡值的概念及其在现代C++中的作用. 通过学习右值引用与移动语义, 开发者可以优化资源管理, 减少不必要的拷贝操作, 从而提高程序性能. 适合希望深入了解C++底层机制的开发者阅读.原创 2025-03-15 19:54:28 · 743 阅读 · 0 评论 -
C++20 新特性总结
本文全面总结了C++20的重要更新, 涵盖三路比较运算符, 模板参数占位符, 概念与要求, Ranges库, std::span, 类型模板参数扩展, 编译时计算, Lambda扩展, 格式化输出, 日期与时区支持, 协程, 多线程同步原语, 同步输出流以及模块系统. 通过实际代码示例和关键点解析, 帮助读者快速掌握这些新特性, 提升开发效率.原创 2025-03-11 14:39:38 · 1974 阅读 · 0 评论 -
理解C++ Type Traits
在 C++中, Type Traits(类型特性)是一组模板类和函数, 它们提供了一种在编译时查询, 修改和操作类型信息的机制. Type Traits 是 C++ 标准库 `<type_traits>` 头文件的核心内容, 它利用了模板元编程(Template Meta Programming)的技术, 允许程序在编译时进行类型检查, 类型转换和类型选择等操作, 从而提高代码的安全性, 性能和灵活性.原创 2025-02-11 23:26:53 · 509 阅读 · 0 评论 -
C++ libfmt 实战: 高效便捷的格式化库
libfmt的调用方式与Python的格式化方式相近, 可以替代所有的printf替代, 相比起C++的内置格式化方式它更快, 更安全而且更为简便. 本文介绍其使用方法.原创 2025-02-09 18:39:19 · 833 阅读 · 0 评论 -
C++编译时间可视化
编译时间可视化和优化.原创 2025-01-20 22:27:43 · 556 阅读 · 0 评论 -
C++异常处理详解
介绍C++Exception的用法,实践建议原创 2025-01-17 22:56:17 · 983 阅读 · 0 评论 -
C++基础之: 迭代器
介绍C++ 迭代器(iterator)的使用.原创 2025-01-15 22:54:16 · 626 阅读 · 0 评论 -
C++ 类模板教程
本教程通过栈的实现为例, 深入探讨类模板的实现, 使用, 以及特化, 偏特化, 默认参数和类型别名等高级特性, 帮助您更全面地掌握这一强大工具.原创 2025-01-15 21:24:39 · 359 阅读 · 0 评论 -
编译器优化简介
简单介绍一些编译器优化的场景.原创 2025-01-14 19:57:02 · 1095 阅读 · 0 评论 -
深入理解 C++ 函数重载
在 C++ 中, 函数重载是一个非常强大的特性, 允许多个函数使用相同的名称, 但具有不同的参数类型. 重载解析决定了在给定的调用中, 编译器应选择哪个版本的重载函数. 本文将深入探讨 C++ 重载解析的工作原理, 帮助你在实际编程中更好地理解这一机制.原创 2025-01-14 17:03:16 · 905 阅读 · 0 评论 -
探索 C++ Insights: 理解编译器背后的 C++ 实现
C++ Insights 是一款强大的工具, 专注于揭示 C++ 代码在编译器内部的实现细节. 它能够帮助开发者深入理解模板展开, 隐式类型转换, 协程等特性背后的底层机制, 是学习和教学现代 C++ 的绝佳利器.原创 2025-01-11 21:30:03 · 1202 阅读 · 1 评论 -
C++ 条件变量 vs 信号量: 如何选择适合你的多线程同步工具?
了解C++条件变量和信号量的核心机制及应用场景, 包含生产者-消费者模型代码示例.原创 2025-01-10 05:00:00 · 766 阅读 · 0 评论 -
C++ Attributes: 现代 C++ 编程的必备指南
C++ Attributes 是现代 C++ 编程的重要工具, 帮助开发者提升代码质量和性能. 本文解析了常用 Attributes 的用途与实例, 包括 [[nodiscard]] 确保返回值处理, [[deprecated]] 提供弃用提示, [[fallthrough]] 明确逻辑意图, 以及 [[likely]] 优化分支预测等. 通过合理使用这些特性, 开发者可以减少警告, 优化程序效率, 编写更清晰可靠的代码.原创 2025-01-09 20:39:03 · 795 阅读 · 0 评论 -
C++20 Spaceship 操作符 (‘<=>‘):现代 C++ 的比较利器
简要介绍C++ spaceship操作符.原创 2025-01-09 16:10:00 · 972 阅读 · 0 评论 -
C++ 中的 const 和 constexpr: 深入对比与最佳实践
C++ 是一门强调性能和灵活性的编程语言, `const` 和 `constexpr` 是其中两个非常重要的修饰符, 用于处理常量. 然而, 许多开发者在使用时容易混淆它们的用法和适用场景. 本文将深入对比这两个关键字, 提供全面的指导, 帮助您更好地理解和使用它们.原创 2025-01-08 23:33:17 · 832 阅读 · 0 评论 -
优雅处理任务取消: C++20 的 Cooperative Cancellation
C++20 提供的 stop_token, stop_source 和 stop_callback 通过协作式机制实现了任务取消的灵活管理, 使得异步和并发编程更加优雅, 高效和可靠.原创 2025-01-06 16:33:03 · 665 阅读 · 0 评论 -
C++20 Sync Stream: 解决多线程输出混乱问题
通过 C++20 中引入的 std::osyncstream, 彻底解决多线程std::cout输出混乱问题!原创 2025-01-06 12:49:42 · 785 阅读 · 0 评论 -
如何让C++代码更加安全-工具篇
C++灵活性带来高性能的同时也伴随安全风险. 本文总结提升代码安全性的实践, 包括遵循代码规范, 启用编译器警告, 使用静态分析和内存检查工具, 完善单元和模糊测试, 管理依赖库版本, 并通过CI/CD自动化流程保障质量. 这些方法可显著提高代码安全性和可靠性, 降低工程风险.原创 2025-01-04 23:01:44 · 1082 阅读 · 0 评论 -
探索 Google Test: 从基础断言到高级 Mock 技巧
本文系统地介绍了 Google Test 框架的使用, 从基础断言方法到高级测试技巧, 包括异常测试, 退出测试和 Mock 行为模拟. 通过具体的代码示例, 展示了如何测试整型, 字符串, 浮点数等不同数据类型, 以及如何在复杂场景下模拟接口类行为.原创 2025-01-04 17:55:28 · 398 阅读 · 0 评论 -
现代 C++ 必备知识:解锁 `std::optional`、`std::variant` 和 `std::any`
介绍C++17中的std::optional, std::variant, std::any.原创 2025-01-03 20:13:05 · 932 阅读 · 0 评论 -
C++协程(Coroutine)简介
介绍C++20 coroutine.原创 2025-01-02 22:43:01 · 915 阅读 · 0 评论 -
C++基础之移动语义(Move Semantic)
介绍 Move 语义的核心概念和应用场景.原创 2025-01-02 20:58:31 · 890 阅读 · 0 评论 -
C++ Lambda 表达式: 简洁与高效的完美结合
介绍C++ Lambda表达式.原创 2025-01-01 21:16:30 · 444 阅读 · 0 评论 -
C++26 新特性预览(Preview)
本文介绍一些C++26新特性.原创 2024-12-30 21:09:45 · 1790 阅读 · 0 评论 -
图解Modern Cpp内存序
探讨C++内存序的特性, 分类和使用场景, 帮助开发者写出高效且安全的多线程代码.原创 2024-12-29 19:37:02 · 953 阅读 · 0 评论 -
Modern C++ std::atomic简介
探讨 std::atomic 的特性、使用方法及其在实际开发中的应用场景原创 2024-12-28 20:10:23 · 1029 阅读 · 0 评论 -
C++20 jthread: 从RAII到线程管理的进化
C++20 jthread 简介.原创 2024-08-01 17:10:23 · 483 阅读 · 0 评论 -
C++20 Span 简介
C++20 std::span 简介.原创 2024-07-31 12:54:38 · 456 阅读 · 0 评论 -
C++字面量总结
C++字面量整理, 包含数值, 字符串, 时间等类型.原创 2024-06-24 21:47:29 · 412 阅读 · 0 评论 -
C++23 Coroutine Generator样例
C++23 coroutine generator sample code.原创 2024-05-14 16:00:24 · 509 阅读 · 0 评论 -
C++20 Concepts简介
简要介绍c++20 Concept原创 2024-04-01 19:27:14 · 789 阅读 · 0 评论 -
C++ Lambda作为状态机使用
C++ Lambda作为状态机使用原创 2024-05-05 00:12:57 · 375 阅读 · 0 评论