
深入浅出C++
文章平均质量分 95
C++笔记
一道秘制的小菜
记录我的学习日记
展开
-
C++_022栈的基本使用
概念:deque(双端队列:是一种双开口的连续空间的数据结构,双开口的含义是:可以在头尾两端进行插入和 删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比 较高。deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际deque类似于一个动态的二维数组,其底层结构如下图所示:数据都存储在每个buff当中,且有一个中控数组,实际上是一个指针数组(包含了指向每个buff的指针)原创 2024-11-29 03:57:47 · 1070 阅读 · 0 评论 -
C++第十一节课 new和delete
对于内置类型,一般不会出现大问题;但是对于自定义类型:直接会引发程序崩溃!原创 2024-09-20 22:31:30 · 1318 阅读 · 0 评论 -
С++第十三节课 string初体验
字符串中是指针。原创 2024-09-20 22:22:21 · 1535 阅读 · 0 评论 -
C++第十二节课 模板初阶和string引入
我们不需要写具体的函数,而是写这个函数的模板,编译器会根据模板生成对应的函数;两者的作用是等效的!用模板完成的功能有时候也叫泛型编程;可以通过定义多个模板参数来实现;函数模板根据调用,自己退到模板参数的类型,实例化出对应的函数;答案:不可以!规定不可以!原创 2024-09-19 15:35:20 · 761 阅读 · 0 评论 -
C++第八节课 日期类的补充
(这里一个是日期类对象,还有一个是cout,cout是一个类对象---ostream的类对象!(也就是iostream这个头文件里有ostream类,cout是ostream这个类定义的对象!但是对于d1 + 100,此时d1的值没有被修改,因此运算符重载+函数可以上const来修饰!因为this修饰为const,则*this无法修改,this指向的对象内容无法修改!成员函数后面加上const之后,普通对象和const修饰的对象都可以调用!但是成员函数中的this是隐含的,我们无法修改它!原创 2024-09-19 15:04:33 · 1133 阅读 · 0 评论 -
C++第七节课 运算符重载
例如:日期减日期可以求得两个日期之间的天数;但是日期 + 日期没有意义!但是,直接放入类中会报错:因为成员函数的第一个参数为隐藏的this!此时调用函数是采用成员函数的方法调用,且依然可以直接进行比较!原创 2024-09-18 03:19:26 · 1687 阅读 · 0 评论 -
C++第六节课 - 拷贝构造函数
一般情况下,构造函数都需要我们自己去写!但是有两种情况自己可以不用去写构造函数:且对于不同的编译器来说,有的可能也会对内置类型的成员变量进行初始化!下面分别是在VS2013和VS2019中的结果:return之后调用析构函数!注意点:假如当前有一个成员变量如下:这里的_a[100]需不需要使用析构函数来释放?答案是:不需要,析构函数用于释放动态申请的资源,例如下面所示,对于静态的资源(在栈上),不需要我们去手动的释放,出了作用域会自动销毁!(如果定义的是全局对象或者静态对象->不在堆上不需要自己手动释放的,原创 2024-09-18 00:36:32 · 1119 阅读 · 0 评论 -
C++第五节 - this指针、构造函数、析构函数
此时会发现自定义类型_st被初始化,但是内置类型没有被初始化!原创 2024-09-11 02:58:33 · 1175 阅读 · 0 评论 -
C++第四节课 - 内联函数 + 初认类
C++中将struct升级为了一种特殊的类(主要是为了兼容以前的C)- class:默认的成员访问控制是 `private这意味着如果没有显式指定访问修饰符,类的成员(变量和函数)将是私有的。- struct:默认的成员访问控制是 `public这意味着如果没有显式指定访问修饰符,结构体的成员将是公共的。int x;// 默认 privateint x;// 默认 public- class:在继承时,默认的继承访问控制是 `private`。原创 2024-09-11 00:17:34 · 1078 阅读 · 0 评论 -
C++第三节入门 - 引用详解
(引用不能指向。原创 2024-09-10 01:49:57 · 1053 阅读 · 0 评论 -
C++第二节入门 - 缺省参数和函数重载
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数的时候,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参!2、 缺省参数分类 全缺省参数(给所有的参数指定一个值) 缺省参数的值从左到右依次赋予! 传参是从左往右依次传参! 中间不能隔着给值应用示例:通过缺省参数我们可以默认给栈的初始化赋值为4,如果这个栈过大,存放的数据过多,会一直不断扩容造成效率低下,因此可以使用缺省参数的形式避免这种情况!注意点:缺省参数不能在函数声明和定义中同时出现(且只能在函原创 2024-09-10 01:49:24 · 755 阅读 · 0 评论 -
C++第一节入门
正常的命名空间定义定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型!// 命名空间中可以定义变量/函数/类型int val;命令空间可以嵌套int a = 0;int b;int a = 2;int d;此时N1和N2的a为两个不同的变量!int main()// 访问N1中的a// 访问N2中的areturn 0;原创 2024-09-09 03:21:23 · 1048 阅读 · 0 评论