C++
文章平均质量分 93
详解C++语法知识
掉毛小公鸡1234567
师范生一枚,自学编程ing
展开
-
【C++】C++基础知识
梳理了入门C++的基础知识原创 2023-07-21 22:15:35 · 198 阅读 · 10 评论 -
【C++】构造函数 | 析构函数
详解类的成员函数之构造函数和析构函数原创 2023-07-26 12:05:21 · 389 阅读 · 10 评论 -
【C++】拷贝构造函数 什么时候需要自定义
我们为什么需要拷贝构造函数?什么时候要自定义,什么时候不要?原创 2023-08-03 00:25:16 · 206 阅读 · 3 评论 -
C++类和对象(上) 面向过程与面向对象 | 访问限定符 | 封装 | 类的作用域 | 实例化 | 类对象的存储方式 | this指针
C++入门之类和对象原创 2023-08-10 14:51:34 · 145 阅读 · 4 评论 -
【C++】运算符重载 | 赋值运算符重载
1.常用的操作符有:+、-、*、/、++、--、=(赋值)、==(判断相等)、>、=、原创 2023-08-20 23:54:15 · 2738 阅读 · 13 评论 -
【C++小项目】实现一个日期计算器
本篇我们用C++来实现一个日期计算器。想知道迄今为止你在地球上一共度过了多少天吗?距离寒假还有多少天呢?一百天后会是几月几号呢?解开这些问题的答案,只需来写一个日期计算器~👻日期计算器是C++入门以来的第一个小项目,亲自实践一遍,我们在C++上的经验值将⬆️⬆️⬆️🚩我们将分三步:Step1:在头文件中把日期类的大体轮廓列出来Step2:把声明的功能一一实现Step3:逐个测试。我们写一点,测一点。这样,就可顺利把日期计算器写出个七七八八。在遇到较复杂的算法时,我会提供思路。原创 2023-08-24 22:43:54 · 1403 阅读 · 16 评论 -
【C++】const成员 | 取地址运算符重载
我们知道,用const修饰 能起到保护,使之不被修改的作用。修饰指针的const有两种位置:我们学过的this指针,就被后者所修饰,因此无法被修改。原创 2023-08-27 01:49:40 · 315 阅读 · 1 评论 -
【C++】初始化列表
其实,无论是用初始化列表,还是函数体内初始化,对于内置类型都是无所谓的。但对于自定义类型成员变量,一定要使用初始化列表初始化。不然连编译都通过不了。原创 2023-08-28 00:20:10 · 223 阅读 · 5 评论 -
【C++】匿名对象 | explicit | static静态成员 | 友元
类的私有成员,一般情况下,外界是无法访问的。但实际上,private / protected并非是一堵密不透风的墙,它对外开了个小口子,我们可以通过小口子访问私有成员。这个小口子就是友元。友元是C++中的一种关系:像朋友一样亲密到可以访问私人空间的关系。发生在函数和类之间 or 类和类之间。通过友元的关系,可以让一个函数or类 访问另一个类中的私有成员(private / protected)。friend友元函数 友元类。原创 2023-09-03 22:28:59 · 181 阅读 · 2 评论 -
【C++】拷贝对象时,编译器的偷偷优化
1.连续的 构造和拷贝构造 会被优化成 直接调用构造。(分步的就无法优化了)2.产生的临时变量往往会被优化掉。原创 2023-09-05 16:03:12 · 321 阅读 · 10 评论 -
【C++】C++动态内存管理
我们的代码并非放在代码段里的,而是以文件的形式存在磁盘上的。代码经过编译链接形成的二进制指令,才是放进代码段里的。(即可执行代码) “abcd”如果没有被const修饰,那是放在栈区的。经过const修饰为只读常量后,放在代码段。原创 2023-09-08 10:50:07 · 215 阅读 · 3 评论 -
【C++】泛型编程 | 函数模板 | 类模板
泛型编程是啥?编写一种一般化的、可通用的算法出来,是代码复用的一种手段。类似写一个模板出来,不同的情况,我们都可以往这个模板上去套。这是一个交换函数。如果很多不同类型的数据需要交换,咋办?函数重载?函数重载的确可以解决,但是每多一种数据,都要实现对应的重载函数。实在太麻烦了。我们想要的是:有一个一般化的模板,不管是什么类型,往这个模板函数上套用就行。这就是泛型编程的思想。结果:接下来我们具体介绍如何使用泛型编程。原创 2023-09-13 18:40:01 · 257 阅读 · 7 评论 -
【C++】STL简介 | string类的常用接口
全称为Standard Template Library(标准模板库),是C++标准库的重要组成部分。它不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。通俗来说,STL就是将常见的数据结构(如顺序表,链表,栈,队列,二叉树,哈希等)以模板的形式进行封装,使用时,不用人为再去写,可以直接调用。并且,一些常见的通用的算法也不用自己实现,可以直接从STL调用。原创 2023-09-18 21:58:14 · 247 阅读 · 0 评论 -
【C++】STL中string类的实现
在C语言中,使用printf直接输出string类型的字符串可能会出现乱码。这是因为printf函数的%s格式化符号期望传入一个char类型的参数,而string类型的字符串实际上是一个对象,不是一个字符指针。所以在使用printf输出string类型的字符串时,应该使用s.c_str()方法将string类型转换为char类型。而在C++中,使用cout输出string类型的字符串是没有问题的。cout对string类型有特殊的处理方式,可以直接输出string类型的字符串。原创 2023-09-26 13:25:56 · 272 阅读 · 1 评论 -
【C++】vector的介绍 | 常见接口的使用
vector是一个类模板。它能够容纳各种类型的对象作为其元素,并且可以动态地调整大小。可以理解为动态数组。它像数组,又不像。vector也采用的连续存储空间来存储元素。这意味着可以采用下标对vector的元素进行访问,和数组一样高效。它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质来说,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小,为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。原创 2023-09-29 14:46:42 · 209 阅读 · 0 评论 -
【C++】vector的模拟实现 | 使用memcpy拷贝时的问题 | 实现深拷贝 | 迭代器失效问题
上一篇我们说到了vector,它是一个类模板,能够容纳各种类型的对象作为其元素,并且可以动态地调整大小。可以理解为动态数组。这篇我们就亲自实现一下 简易版的vector,这能大大加深我们对vector的理解!而因为vector的实现和string有很多相似之处,所以实现过程中的一些细节便不再详述。原创 2023-10-06 15:43:23 · 614 阅读 · 0 评论 -
【C++】list的介绍及使用 | 模拟实现list | 对比vector和list
1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2.其底层是双向链表结构。双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3.list与forward_list非常相似。最主要的不同在于forward_list是单链表,只能朝前迭代。(这也使得它更加得简单高效)4.与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率 更好。原创 2023-10-26 12:04:58 · 792 阅读 · 0 评论 -
【C++】stack | queue | priority_queue | deque
1.队列是一种特殊的线性表,它只能在队尾插入数据,队头出数据,这一模式被称为“先进先出”或FIFO(first in first out)。2.从底层实现来看,queue也是作为容器适配器被实现的。展示下queue简易版的底层实现:底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:empty:检测队列是否为空size:返回队列中有效元素的个数front:返回队头元素的引用back:返回队尾元素的引用push_back:在队列尾部入队列。原创 2023-11-09 00:22:36 · 296 阅读 · 0 评论 -
【C++】非类型模板参数 | array容器 | 模板特化 | 模板为什么不能分离编译
1.模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2.增强了代码的灵活性1.模板会导致代码膨胀问题,也会导致编译时间变长2.出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2023-11-12 14:39:53 · 246 阅读 · 0 评论