c++
-
C++结构体基本教程_C++ struct属性与使用方式
struct 是 C++ 中用于轻量级数据封装的类型,默认成员 public,支持嵌套和列表初始化,定义后可像基本类型一样声明、赋值和访问成员。 结构体(struct)是 C++ 中组织相关数据的最基本方式,它允许你把多个不同类型的数据打包成一个整体,方便管理和使用。 它不是类,但语法上很像——默认…
-
C++如何实现一个简单的事件分发器_C++实现基于回调的事件驱动模型
首先定义事件类型与回调函数签名,使用枚举和std::function封装;接着实现EventDispatcher类,通过map维护事件与回调列表的映射,提供on、off和emit方法;最后注册监听并触发事件,实现回调执行。示例中成功输出“Key E was pressed”,验证了机制正确性。 在C…
-
c++如何实现一个高性能的无锁队列_c++ lock-free编程实战【并发】
高性能无锁队列在C++中需基于Michael-Scott算法,用std::atomic指针、恰当内存序及安全内存回收实现MPMC;推荐优先使用boost::lockfree::queue或libcds。 实现高性能无锁队列(lock-free queue)在 C++ 中核心在于:**避免互斥锁,用原…
-
c++指针到底是什么 5分钟彻底搞懂c++指针的用法【详解】
指针是存储内存地址的变量,核心在于理解地址、类型和解引用;通过&取地址、*解引用实现读写;用于函数改参、动态内存和数据结构;需避免未初始化、悬空、越界和野指针。 指针就是存地址的变量——不是数据本身,而是数据在内存里“住哪儿”的门牌号。它不神秘,但必须理解清楚地址、类型和解引用这三件事,才能…
-
c++条件变量condition_variable怎么用_c++多线程通信实现【详解】
std::condition_variable 必须与 mutex 配合使用,通过循环检查加锁保护的共享条件,wait() 自动处理解锁/重锁,notify_one() 或 notify_all() 用于唤醒等待线程,需注意通知时机与虚假唤醒防护。 条件变量 std::condition_varia…
-
如何用c++实现一个简单的JSON解析器 理解JSON结构与解析过程【项目练手】
C++手写JSON解析器核心是用Variant类统一表示6种JSON类型,通过递归下降解析字符流,结合peek/consume/expect控制流程,分步实现并强化错误处理。 用C++写一个简单的JSON解析器,核心是理解JSON的两种基本结构(值和容器)以及递归解析逻辑。不需要依赖第三方库,手写能…
-
c++的std::scoped_lock是什么 一次性锁住多个互斥体的安全方法【详解】
std::scoped_lock 是 C++17 引入的 RAII 工具,用于安全、异常安全地同时锁定多个互斥体并自动释放,内置死锁避免机制,无需手动排序,支持混合互斥体类型且仅可移动。 std::scoped_lock 是 C++17 引入的一个 RAII(资源获取即初始化)风格的工具,用于**安…
-
C++中的placement new是什么?C++在指定内存上创建对象【内存管理】
placement new 是 C++ 中不分配内存、仅在指定地址调用构造函数的特殊 new 表达式;用于对象池、嵌入式内存布局、容器实现等场景,需手动调用析构函数并管理内存。 placement new 是 C++ 中一种特殊的 new 表达式,它不分配内存,而是直接在你已经准备好的、指定的内存地…
-
C++中的static_assert有什么用?C++编译期断言使用方法【代码健壮性】
static_assert 是 C++ 编译期断言机制,用于在编译阶段检查常量表达式是否为真,条件不满足时立即报错,无运行时开销,广泛应用于类型约束、跨平台假设验证及模板元编程中。 static_assert 是 C++ 的编译期断言机制,用来在代码编译阶段就检查某个条件是否为真。如果条件不满足,编…
-
c++的委托构造函数是什么 简化构造函数的代码复用【详解】
委托构造函数是C++11引入的特性,允许一个构造函数通过初始化列表调用本类另一构造函数来复用初始化逻辑;被委托者完成全部成员初始化后,委托者函数体才执行。 委托构造函数是 C++11 引入的特性,允许一个构造函数调用同一个类的另一个构造函数,从而避免重复编写初始化逻辑,实现代码复用。 什么是委托构造…