
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
学完线程这一部分之后,我最大的感受是:线程并不是孤立的一个 API 知识点,而是把进程地址空间、页表、调度、信号、栈、系统调用这些内容串在了一起。刚开始我只是觉得线程就是“多条执行路线”,会创建、会等待就差不多了。后来真正往底层看,才发现线程为什么轻量、为什么共享资源、为什么又有自己的栈,背后其实都和虚拟地址空间有关。尤其是pthread_t和LWP这一块,让我意识到 Linux 线程并不是单纯由

本文围绕 Linux 多线程互斥与同步展开,从共享资源、临界区和互斥锁入手,分析 ticket-- 非原子导致的线程安全问题,并进一步讲解条件变量、生产者消费者模型、POSIX 信号量、环形队列、线程池、单例模式、可重入函数及 STL/智能指针线程安全等核心内容。

C++中的构造函数与析构函数是类的重要成员函数,分别负责对象的初始化和资源释放。构造函数在对象创建时自动调用,具有与类同名、无返回值、可重载等特点,编译器会默认生成无参构造函数。析构函数在对象销毁时自动调用,用于资源清理,类名前加~,无参无返回值。当类中有动态资源申请时,必须显式定义析构函数以避免内存泄漏。编译器生成的默认析构函数会处理自定义类型成员的析构。多个局部对象按定义顺序逆序析构。

C++11引入了{}统一初始化语法,支持所有类型使用{}初始化,包括内置类型和自定义类型。相比C++98仅支持数组和结构体初始化,C++11的{}初始化更简洁,可省略=号,在多参数构造时尤为方便。标准库新增std::initializer_list容器,底层存储数组指针,支持迭代器遍历。STL容器都支持initializer_list构造函数,使容器初始化更加灵活,如vector<int&g

本文摘要:文章详细介绍了C++中的左值和右值概念:左值表示持久数据对象(如变量、解引用指针),可寻址并出现在赋值号两侧;右值表示临时数据(如常量、表达式结果),仅出现在赋值号右侧且不可寻址。通过代码示例展示了左值引用和右值引用的用法及区别,并说明右值引用和const左值引用可延长临时对象生命周期。文章还探讨了参数匹配规则,以及移动构造和移动赋值的实现原理——通过"窃取"右值资源避免深拷贝,提升效率

本文聚焦 C++11 可变参数模板,先讲类模板和函数模板的基础声明,再解析编译期实例化与参数包递归扩展逻辑,结合模拟list::emplace_back、通用参数转发案例,展现其高效构造对象、简化泛型代码的价值,提及空包声明、完美转发等注意事项,助快速掌握这一泛型编程利器。

聚焦C++11新增的四大类核心功能,包括默认移动构造/移动赋值、成员变量缺省值、default/delete关键字及final/override关键字。默认移动语义通过“窃取”右值资源优化深拷贝效率,编译器可自动生成或手动实现;成员变量缺省值集中管理默认值,简化构造函数设计;default/delete关键字精准控制默认函数生成,替代C++98隐晦写法;final/override规范继承体系,避

本文聚焦C++11核心特性Lambda表达式,解析其语法、机制与实用价值。Lambda为匿名函数对象,基础语法支持捕捉列表、参数列表等部分灵活简化,核心优势是无需定义独立函数或仿函数,可在局部直接封装逻辑,通过值捕捉、引用捕捉等复用上下文变量。文中结合代码示例,展示其在STL算法、变量交换等场景的应用,点明全局Lambda捕捉列表需为空等关键规则。其本质是编译器生成的匿名仿函数,兼具简洁性与灵活性

本文聚焦C++异常处理核心知识点,从异常的概念、抛出与捕获机制入手,详解栈展开、类型匹配规则(含3种特殊转换)、异常重新抛出等关键逻辑。结合实际场景,分析异常安全问题与解决方案,介绍异常规范的用法,并对比标准库异常体系与自定义异常设计。通过清晰示例与实用技巧,展现异常处理如何摆脱错误码的冗余传递,实现错误检测与处理的分离,帮助开发者掌握这一构建稳健、可维护C++程序的核心工具。









