C++
文章平均质量分 93
火鸡面H_H
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++多态:理解面向对象的“一个接口,多种实现”
本文深入解析了C++多态的实现原理与关键特性。首先介绍了多态的概念,即通过基类指针或引用调用虚函数时,不同对象会产生不同行为。实现多态需要满足两个条件:通过基类指针/引用调用虚函数,且派生类必须重写基类虚函数。文章详细讲解了虚函数重写的规则,包括协变和析构函数重写等特殊情况,并对比了函数重载、重写和重定义的区别。通过内存模型分析,阐述了虚函数表的工作原理:派生类虚表会继承基类虚表内容,重写时覆盖对应虚函数,新增虚函数则追加到虚表末尾。最后探讨了动态绑定与静态绑定的区别,以及单继承和多继承中虚表的存储机制。原创 2025-08-13 20:51:46 · 778 阅读 · 13 评论 -
C++:类的继承
本文主要介绍了C++中类的继承机制。内容包括:继承的概念和定义,基类与派生类对象赋值转换,派生类的默认函数,以及菱形继承问题。重点讲解了公有、保护、私有三种继承方式,派生类构造和析构顺序,静态成员继承特性。针对菱形继承带来的数据冗余和二义性问题,介绍了通过虚继承(virtual)的解决方案及其实现原理,分析了虚基表指针和虚基表的作用。文章指出多继承是C++的复杂特性之一,建议避免设计菱形继承结构,因其会增加复杂度和运行时开销。原创 2025-08-05 20:54:48 · 784 阅读 · 12 评论 -
C++:STL中的栈和队列的适配器deque
本文主要探讨了C++中容器适配器stack和queue的底层实现原理及其优势。通过分析deque(双端队列)的特性,解释了其作为stack和queue默认底层容器的原因:deque在头部和尾部操作效率高(O(1)),且空间利用率优于list,同时避免了vector扩容时的数据迁移问题。文章详细比较了不同容器的优缺点,指出deque虽不适合遍历,但完美适配stack和queue只需单端操作的需求。此外,还介绍了优先级队列的模拟实现,重点阐述了堆结构如何通过向上/向下调整算法维护特性,确保O(logn)时间复杂原创 2025-08-03 15:04:02 · 1085 阅读 · 6 评论 -
C++:STL中list的使用和模拟实现
C++中的list是STL提供的双向链表容器,采用带头双向循环链表结构。与vector不同,list支持O(1)时间复杂度的任意位置插入删除,但不支持随机访问。list迭代器通过运算符重载实现双向遍历,需特殊封装。使用方式包括push_back、insert等操作,并提供sort、merge等特有方法。模拟实现时重点在于迭代器设计,通过模板参数区分const和非const迭代器,重载解引用、递增等运算符。list的节点结构包含前后指针和数据域,通过动态内存管理实现按需分配。相比vector,list更适合频原创 2025-07-30 17:00:05 · 952 阅读 · 6 评论 -
C++:STL中vector的使用和模拟实现
本文介绍了C++中vector容器的基本概念和使用方法。vector作为STL中的可变大小数组容器,具有连续存储空间和高效访问特性。文章详细讲解了vector的构造函数、迭代器使用、空间管理(size/capacity/resize/reserve)以及增删改操作(push_back/insert/erase/pop_back),并提供了模拟实现代码。特别强调了迭代器失效问题及深拷贝的必要性。与string类类似,掌握vector有助于理解其他STL容器。建议读者结合官方文档深入学习,通过实践巩固知识。原创 2025-07-26 22:11:23 · 924 阅读 · 7 评论 -
C++string类用法
C++标准库中的string类提供了比C语言更安全、更便捷的字符串处理方式。它封装了字符串的基本操作,包括构造、赋值、长度管理、查找修改等功能。string类支持多种构造函数和赋值方法,提供size()/length()获取长度,支持下标访问和at()安全访问。查找操作包括find()和rfind(),修改操作有append()、insert()等。类还实现了比较运算、子串提取、数值转换等功能,并支持迭代器和范围for循环遍历。相比C字符串,string类自动管理内存,避免越界访问,更符合面向对象思想,使用原创 2025-07-20 20:51:50 · 580 阅读 · 5 评论 -
C++模版初阶
摘要:C++模板技术通过函数模板和类模板实现泛型编程,减少代码重复。函数模板允许定义与类型无关的通用函数,编译器根据调用时的实参类型自动生成特定版本。相比函数重载,模板提高了代码复用率和可维护性。类模板同样遵循此原理,适用于创建通用数据结构。模板实例化分为隐式和显式两种方式,其中显式实例化需指定具体类型。类模板实例化后才是真正的类类型。模板技术有效解决了不同类型数据需要重复编写相似代码的问题。原创 2025-06-16 15:38:28 · 1121 阅读 · 7 评论 -
C/C++内存分布和管理
C/C++内存分布以及管理方式,包含new和delete使用方式和实现原理,让你更加理解new和delete,使用更加自如,malloc、free和new、delete的共同点和区别原创 2025-06-12 19:57:32 · 1504 阅读 · 13 评论 -
C++深入类与对象
在上一篇中提到了构造函数,那么这篇再来提一下构造函数,编译器自动生成的默认构造函数对于内置类型不做处理,自定义类型会调用它自己的构造函数。对于自己写的构造函数,之前是在函数体中初始化,当然不止这一种初始化,还有初始化列表的方式进行初始化,那么为什么可以在函数体中初始化还需要初始化列表呢?咱接着往下看!原创 2025-05-31 19:59:13 · 793 阅读 · 10 评论 -
C++类与对象:六个默认构造函数(二)
在上篇提到了构造函数、拷贝构造函数、析构函数,这篇将会分享剩下默认构造函数:运算符重载、取地址及const取地址操作符重载。当学习了这些构造函数可以实现一个日期类。原创 2025-05-21 22:12:19 · 694 阅读 · 8 评论 -
C++类与对象:六个默认构造函数(一)
这篇文章带你了解构造、析构、拷贝构造函数,体验其中的奥妙,还在默认构造函数中迷茫的这篇文章不容错过,默认构造函数在C++中构造函数非常重要,各位进来学习吧原创 2025-05-12 21:39:49 · 1075 阅读 · 13 评论 -
C++面向对象编程入门:从类与对象说起(一)
C语言是面向过程,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题,而C++面向的是对象,关注的是对象,将一件事拆解成多个对象,靠对象之间互交完成。原创 2025-05-08 18:53:36 · 1164 阅读 · 8 评论 -
【C++编程入门】:基本语法
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。原创 2025-04-29 21:03:30 · 1103 阅读 · 16 评论 -
【C++编程入门】:从零开始掌握基础语法
C++语言是通过对C语言不足的地方进行优化创建的,C++在C语言之上,C++当然也兼容C语言,在大部分地方使用C++比C更方便,可能使用C需要一两百行代码,而C++只需要五六十行。原创 2025-04-21 22:08:28 · 1165 阅读 · 15 评论
分享