![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 76
从入门到捕蛇者说
这个作者很懒,什么都没留下…
展开
-
C++11新特性:4.自动类型推导
在C++11中增加了很多新的特性,比如可以使用auto自动推导变量的类型,还能够结合decltype来表示函数的返回值。使用新的特性可以让我们写出更加简洁,更加现代的代码。原创 2024-04-19 18:39:53 · 713 阅读 · 0 评论 -
C++11新特性:3.常量表达式修饰符 - constexpr
在C++11之前只有const变量只读修饰常量numcountbb = a2;原创 2024-04-19 14:01:56 · 994 阅读 · 0 评论 -
C++11新特性:2.指针空值类型 - nullptr
在C++程序开发中,为了提高程序的健壮性,一般会在定义指针的同时完成初始化操作,或者在指针的指向尚未明确的情况下,都会给指针初始化为。这个0(0x0000 0000)表示的就是虚拟地址空间中的0地址,这块地址是只读的。出于兼容性的考虑,C++11 标准并没有对 NULL 的宏定义做任何修改,而是另其炉灶,引入了一个新的关键字。C++ 中将 NULL 定义为字面常量 0,并不能保证在所有场景下都能很好的工作,比如,函数重载时,和预期是不一样的,其实这个原因前边已经说的很明白了,在C++中。原创 2024-04-19 11:54:02 · 170 阅读 · 0 评论 -
C++11新特性:1.原始字面量
在C++11中添加了定义原始字符串的字面量,定义方式为:R “xxx(原始字符串)xxx”其中()两边的字符串可以省略。最后强调一个细节:在R “xxx(raw string)xxx” 中,原始字符串必须用括号()括起来,括号的前后可以加其他字符串,所加的字符串会被忽略,并且加的字符串必须在括号两边同时出现。在C++11之前如果一个字符串分别写到了不同的行里边,需要加连接符,这种方式不仅繁琐,还破坏了表达式的原始含义,如果使用原始字面量就变得简单很多,很强直观,可读性强。原创 2024-04-19 11:30:14 · 168 阅读 · 0 评论 -
命名空间 - this_thread
在C++11中不仅添加了线程类,还添加了一个关于线程的命名空间std::this_thread,在这个命名空间中提供了四个公共的成员函数,通过这些成员函数就可以对当前线程进行相关的操作了。原创 2024-04-08 10:48:56 · 916 阅读 · 0 评论 -
C++线程的使用
当启动了一个线程(创建了一个thread对象)之后,在这个线程结束的时候(std::terminate()),我们如何去回收线程所使用的资源呢?原创 2024-04-08 10:30:09 · 661 阅读 · 0 评论 -
处理日期和时间的chrono库
C++11中提供了日期和时间相关的库chrono,通过chrono库可以很方便地处理日期和时间,为程序的开发提供了便利。。原创 2024-04-08 10:07:44 · 807 阅读 · 0 评论 -
C++线程同步之互斥锁
对于后两种情况来说,如果不做任何的人为干涉就会出现各种各样的错误数据。这是因为线程在运行的时候需要先得到CPU时间片,时间片用完之后需要放弃已获得的CPU资源,就这样线程频繁地在就绪态和运行态之间切换,更复杂一点还可以在就绪态、运行态、挂起态之间切换,这样就会导致线程的执行顺序并不是有序的,而是随机的混乱的,就如同下图中的这个例子一样,理想很丰满现实却很残酷。std::mutex互斥锁在有些资料中也被称之为互斥量,二者是一个东西。原创 2024-04-08 09:20:09 · 949 阅读 · 0 评论 -
STL- 常用算法
算法主要是由头文件。原创 2023-09-10 10:53:15 · 156 阅读 · 0 评论 -
STL- 函数对象
函数对象(仿函数)是一个,不是一个函数。原创 2023-09-06 23:17:20 · 253 阅读 · 0 评论 -
map/ multimap容器
map和multimap。原创 2023-09-06 21:44:14 · 122 阅读 · 0 评论 -
set/ multiset 容器
对于自定义数据类型,set必须指定排序规则才可以插入数据。总结:利用仿函数可以指定set容器的排序规则。两种方式都可以创建对组,记住一种即可。功能描述:创建set容器以及赋值。set存放内置数据类型。set存放自定义数据类型。原创 2023-09-06 21:11:46 · 80 阅读 · 0 评论 -
list容器
将数据进行链式存储(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表由一系列组成结点的组成:一个是存储数据元素的,另一个是存储下一个结点地址的STL中的链表是一个双向循环链表由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于List有一个重要的性质,插入操作和删除操作都不会造成原有list迭代器的失效,这在vector是不成立的。总结:STL中,各有优缺点。原创 2023-09-05 23:48:54 · 52 阅读 · 0 评论 -
stack和queue容器
(First In Last Out,FILO)的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为 —push栈中弹出数据称为 —pop。原创 2023-09-03 21:50:54 · 64 阅读 · 0 评论 -
deque容器
deque容器和vector容器的构造方式几乎一致,灵活使用即可。原创 2023-09-03 20:37:01 · 238 阅读 · 0 评论 -
vector容器
vector的多种构造方式没有可比性,灵活使用即可。原创 2023-09-03 16:35:44 · 243 阅读 · 0 评论 -
string容器
插入和删除的起始下标都是从0开始。原创 2023-09-03 10:07:26 · 116 阅读 · 0 评论 -
STL初识
学习目标:vector中存放自定义数据类型,并打印输出//自定义数据类型public:mAge = age;//存放对象//创建数据it!= v.end();it++) {//放对象指针//创建数据it!= v.end();test02();return 0;原创 2023-09-01 21:10:45 · 182 阅读 · 0 评论 -
C++模板
模板就是建立通用的模具,大大提高复用性例如生活中的模板一寸照片模板:PPT模板:模板的特点:C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板C++提供两种模板机制:函数模板和类模板函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。语法:解释:template — 声明创建模板typename — 表面其后面的符号是一种数据类型,可以用class代替T — 通用的数据类型,名称可以替换,通常为大写字母示例:总结:注意事项:自动原创 2023-08-31 23:35:21 · 136 阅读 · 0 评论 -
C++文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过C++中对文件操作需要包含头文件。原创 2023-08-28 22:25:11 · 1046 阅读 · 0 评论 -
C++多态
多态分为两类下面通过案例进行讲解多态总结:多态满足条件多态使用条件重写:函数返回值类型 函数名 参数列表 完全一致称为重写。原创 2023-08-27 23:00:04 · 279 阅读 · 0 评论 -
C++继承
继承是面向对象三大特性之一有些类与类之间存在特殊的关系,例如下图中:我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处普通实现:继承实现:总结:继承的好处:可以减少重复的代码class A : public B;A 类称为子类 或 派生类B 类称为父类 或 基原创 2023-08-27 17:14:37 · 109 阅读 · 0 评论 -
运算符重载
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。原创 2023-08-27 12:28:38 · 84 阅读 · 0 评论 -
C++友元的三种实现
生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为友元的三种实现。原创 2023-08-26 19:47:11 · 179 阅读 · 0 评论 -
C++对象模型和this指针
在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上。原创 2023-08-26 17:40:17 · 813 阅读 · 0 评论 -
对象的初始化和清理
总结:如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题。如果用户定义有参构造函数,c++不在提供默认无参构造,但是会提供默认拷贝构造。解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题。C++类中的成员可以是另一个类的对象,我们称该成员为 对象成员。对象的初始化和清理工作是编译器强制要我们做的事情,因此如果。那么当创建B对象时,A与B的构造和析构的顺序是谁先谁后?原创 2023-08-26 11:19:59 · 102 阅读 · 0 评论 -
面向对象——封装
C++认为,对象上有其属性和行为 人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌… 车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐、放空调… 具有相同性质的,我们可以抽象称为,人属于人类,车属于车类。原创 2023-07-30 22:33:51 · 189 阅读 · 0 评论 -
C++函数
函数名可以相同,提高复用性同一个作用域下函数名称相同函数参数类型不同或者个数不同或者顺序不同函数的返回值不可以作为函数重载的条件//函数重载需要函数都在同一个作用域下 void func() {cout原创 2023-07-30 18:49:52 · 271 阅读 · 0 评论 -
C++引用
结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了。总结:通过引用参数产生的效果同按地址传递是一样的。引用的语法更清楚简单。**作用:**函数传参时,可以利用引用的技术让形参修饰实参。**作用:**常量引用主要用来修饰形参,防止误操作。作用:引用是可以作为函数的返回值存在的。**优点:**可以简化指针修改实参。**作用: **给变量起别名。在函数形参列表中,可以加。用法:函数调用作为左值。原创 2023-07-30 16:36:42 · 183 阅读 · 0 评论 -
内存分区模型
堆区数据由程序员管理开辟和释放堆区数据利用new关键字进行开辟内存。原创 2023-07-30 13:38:14 · 100 阅读 · 0 评论