C++庖丁解牛
文章平均质量分 97
C++太难?别怕!本专栏带你从零基础到大神,用最通俗的语言讲透核心概念,配合实战代码,让你轻松掌握这门强大语言!
递归何不归
桂电本科电科在读,主攻C/C++,励志成为从爱尔兰到契丹无人不知无人不晓的程序员
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++11新特性(3):lambda不是玄学:从编译器生成的仿函数类彻底搞懂 C++ 匿名函数
本文详细解析了C++11中的lambda表达式特性。lambda本质是编译器生成的匿名函数对象,可以定义在函数内部。其语法包含捕捉列表、参数列表、返回值类型和函数体四部分,其中捕捉列表不可省略,支持显式/隐式/混合三种捕捉方式。通过mutable关键字可修改值捕获的变量。底层实现上,每个lambda会被转换为一个具有唯一UUID的仿函数类,捕获变量成为成员变量,函数体转为operator()。lambda调用时直接执行该operator(),效率与普通函数相当。最后提出lambda类型不明确导致难以存入容器原创 2026-04-27 22:54:50 · 564 阅读 · 30 评论 -
C++11新特性(2):深入 C++ 参数传递黑盒:从引用折叠到完美转发,再到可变参数模板
C++11参数传递黑盒解析:引用折叠与完美转发 本文深入探讨了C++11中参数传递的核心机制,重点解析了引用折叠、完美转发和可变参数模板三大特性。主要内容包括: 引用折叠规则:解释了C++11中引用折叠的运作原理,展示了模板实例化时如何通过类型推导生成左值或右值引用版本。 完美转发实现:通过forward函数模板,演示了如何保持参数原始值类别(左值/右值)进行传递,解决了参数传递过程中的值类别退化问题。 可变参数模板:介绍了模板参数包的语法和使用方法,说明了如何实现接受任意数量参数的函数模板。 这些特性共同原创 2026-04-26 22:06:31 · 687 阅读 · 38 评论 -
C++11新特性(1):从列表初始化到右值引用
本文详细介绍了C++11的两个重要新特性:列表初始化和右值引用。在列表初始化部分,文章对比了C++98和C++11的初始化方式,展示了C++11如何通过initializer_list实现更灵活的统一初始化语法,包括对内置类型、自定义类型和容器的初始化支持。右值引用部分则深入讲解了左值/右值的区别,右值引用的基本概念和使用场景,包括如何通过右值引用绑定临时对象,以及move语义的应用。这些特性为C++带来了更高效的资源管理和更简洁的代码书写方式,是现代化C++编程的重要基础。原创 2026-04-25 19:26:21 · 460 阅读 · 12 评论 -
C++庖丁解牛:AVL 树详解:让二叉搜索树不再“歪脖子”
这篇博客详细讲解了AVL树的概念与实现。AVL树通过平衡因子(右子树高度减左子树高度,取值0/1/-1)控制左右子树高度差。文章介绍了带父指针的节点结构,便于插入后更新平衡因子。插入操作遵循二叉搜索树规则,然后根据平衡因子变化决定是否旋转:单旋(左/右)处理完全一边高场景,双旋(左右/右左)处理折线型结构,并重点说明了旋转后平衡因子的更新策略。最后提供了判断AVL树合法性的IsAVLTree函数和计算树高的Height函数。原创 2026-04-04 15:46:37 · 550 阅读 · 27 评论 -
C++庖丁解牛:深入理解多态:从虚函数表到底层实现
本文深入探讨了C++多态的实现机制。首先区分了编译时多态(函数重载和模板)与运行时多态(虚函数重写),指出多态的核心在于运行时确定调用函数。重点分析了虚函数表的底层实现原理,包括虚函数表指针、动态绑定过程等。通过具体示例展示了析构函数重写、override/final关键字的使用场景,并解释了纯虚函数和抽象类的特性。最后详细讲解了虚函数表的工作机制,包括继承关系中的虚函数表变化规则。全文从概念到实现层层深入,为理解C++多态提供了全面指导。原创 2026-03-23 22:52:08 · 829 阅读 · 27 评论 -
C++继承详解
本文详细介绍了C++继承的概念和使用方法。主要内容包括:1) 继承的基本概念和定义,通过Person、Student、Teacher类示例说明继承关系;2) 继承权限问题,分析了访问限定符与继承方式的区别,并给出权限变化表格;3) 继承类模板的特殊处理;4) 基类和派生类之间的转换规则;5) 继承中的作用域和隐藏规则;6) 派生类中基类对象的构造、赋值和析构的特殊处理方式。文章通过具体代码示例,深入浅出地讲解了继承中的关键知识点,为理解和使用C++继承机制提供了全面指导。原创 2026-03-22 19:40:31 · 578 阅读 · 21 评论 -
C++STL详解2:stack和queue
本文详细介绍了C++ STL中的容器适配器stack、queue和priority_queue。stack基于vector实现,遵循先进后出原则;queue基于list实现,遵循先进先出原则。重点剖析了deque的结构与特性,它结合了vector和list的优点,支持随机访问但效率略低。文章还讲解了仿函数的概念及其在priority_queue中的应用,priority_queue默认以大堆形式实现。通过代码示例展示了这些容器的基本实现方式和使用方法,帮助读者理解STL容器的底层机制和使用场景。原创 2026-03-16 22:57:57 · 534 阅读 · 10 评论 -
C++STL详解1:list
本文详细介绍了C++标准库中的list容器,主要包括以下内容: list的本质是带头双向链表,属于顺序表的一种链式实现 list迭代器属于双向迭代器,与vector的随机访问迭代器不同,不支持+=等操作 重点分析了emplace_back接口,它支持可变参数模板和隐式类型转换 分类整理了list的各种接口,特别讲解了splice接口的剪切功能 探讨了list排序的效率问题,建议先拷贝到vector排序再转回 深入剖析了list的底层实现,包括节点类、迭代器类和list本体的设计思路 详细讲解了如何通过模板参原创 2026-03-14 23:06:19 · 917 阅读 · 9 评论 -
类和对象(下):流重载、初始化列表、友元
本文介绍了C++中类的两个重要特性:初始化列表和流重载。初始化列表是构造函数中用于初始化成员变量的专用语法,特别适用于const成员、引用成员和没有默认构造的自定义类型成员。文章详细讲解了初始化列表的使用方法、成员变量初始化顺序以及C++11新增的成员缺省值特性。在流重载部分,重点阐述了如何通过友元函数实现<<和>>运算符的重载,使自定义类型支持流式输入输出,并解释了为何重载函数需要设为全局函数而非成员函数。全文通过代码示例和原理分析,帮助读者深入理解这些核心概念。原创 2026-02-05 20:59:26 · 1253 阅读 · 12 评论 -
类和对象(上)
本文介绍了C++中类和对象的基础知识,主要包括三部分内容:类的定义、实例化和this指针。在类的定义部分,讲解了命名规则、访问限定符和类域的概念,重点说明了成员变量和成员函数的区别。实例化部分阐述了类模板与实例对象的关系,分析了类对象的内存分配规则。最后详细讲解了this指针的作用机制和使用规则,揭示了编译器如何通过隐式this指针区分不同对象的成员变量。全文通过代码示例直观展示了类的基本使用方式,为理解面向对象编程奠定了基础。原创 2026-01-31 16:05:15 · 854 阅读 · 11 评论 -
类和对象(中)
本文介绍了C++中类的默认成员函数,重点讲解了构造函数、析构函数和拷贝构造函数。构造函数用于初始化成员变量,有默认、显式和拷贝三种形式;析构函数用于释放申请的空间,遵循先构造先析构原则;拷贝构造函数用于创建对象的副本,需要注意深拷贝与浅拷贝的区别。文章通过代码示例展示了这些函数的实现和使用场景,并强调了注意事项,如拷贝构造函数的参数必须为引用类型、传值返回会创建临时变量等。这些内容是理解和使用C++类的基础知识。原创 2026-01-31 00:16:50 · 908 阅读 · 6 评论
分享