C++
文章平均质量分 95
C++基础到进阶知识,C++功能的底层原理
凤梨罐头@
冷静,专注,思考
展开
-
C++vector的模拟实现
文章目录vector框架默认构造函数有参构造函数sizecapacity内置数据类型的构造函数const修饰的匿名对象reserveresize迭代器拷贝构造函数传统写法拷贝构造函数现代写法findinsert迭代器失效erasevector框架 template <class T> class vector { public: T _start;//(1) T _finsih;//(2) T _endofstorge;//(3)}; (1)(1)(1)指向当前空间的第一个原创 2022-04-29 17:44:31 · 1583 阅读 · 9 评论 -
C++ vector函数接口及其底层原理
什么是vectorvector类我们可以将其底层看作是一个能够动态扩容数组。在vs下其扩容一般每次是按照前一次容量的1.5倍进行扩容。如:4,69…string类支持的功能,在vector下基本都能使用。vector的构造函数vector的底层原理vector类中包含了三个T类型的指针,分别是-start:指向空间的起始部分_finish:指向当前已用空间的末尾_endofstorger:指向申请空间的末尾push_backvector的push_back和string一样,都是原创 2022-04-28 14:27:43 · 2412 阅读 · 11 评论 -
C++string类模拟实现
ssssss原创 2022-04-27 17:20:20 · 1282 阅读 · 11 评论 -
C++ string类
string类string其实是C++中的一个类。通过cplusplus可以对该类进行具体的学习:这种网站一般都是全英的,简直噩梦,我一般都是看一点查一下有道,英语太菜了= =通过该文档我们大致可以知道string其实是basic_string这个类typedef出来的。string的所有功能都是通过basic_string这个类进行封装的。同样的,string具有6个构造函数。以及非常多的成员函数接下来我们开始详细学习string这个类的功能:这里我们对于常用string接口进行详细原创 2022-04-25 10:00:00 · 865 阅读 · 0 评论 -
C++函数模板初阶
为何需要用到模板在引入模板的的概念之前,我们先看一段代码:这里我们想实现两个char类型变量的交换和两个int类型变量的交换。并为此写了两个swap函数,通过对比两个函数,可以看出,两个函数除了变量的类型不一样之外,其实现原理基本一致。这种写法就导致代码冗余,并且在修改代码的时候需要修改好几份。C++的设计者为了解决这种情况,思考都否有一种函数,能只要实现一份就可以满足同种函数的功能实现。因此就有了函数模板的出现,模板就类似一份模具,其可以对同类型的产品进行复用。void swap(char &a原创 2022-04-24 15:33:47 · 562 阅读 · 10 评论 -
C++内存管理
C++的内存分区C++和C语言的内存分区基本类似:大致可以分成以下几个区,学习内存分区可以帮助我们更好的使用空间。1.栈区:栈区是C++中经常要使用到的区域,函数的形参,局部变量等等都存储在栈上。栈的特点:容量较小,大致有8M左右生命周期:栈帧结束,栈里的局部变量和函数形参便会被系统自动回收2.堆区:堆区是一种需要人为开辟的空间,可以通过 malloc,new等方式进行开辟。堆的特点:容量很大,2G左右,编译器一般不会自动开辟堆上的空间,因此常常需要人为开辟。生命周期:堆申请的数据伴随原创 2022-04-22 08:30:00 · 1170 阅读 · 18 评论 -
C++类和对象(下)
cout<<d1原本是对象插入到流中d1<<cout这样就变成流插入到对象中了cout是cin都是属于全局的对象初始化列表在前面我们学习了构造函数,得知了构造函数会对类的成员变量进行初始化。除此之外,C++又提供出了另一种初始化成员变量的方式,也就是初始化列表。注意:只有构造函数才有初始化列表这一功能,因为只有构造函数才是完成初始化工作的。具体语法:我们以日期类Date为例这时通过类创建对象的时候,初始化列表就会自动完成成员变量的初始化。但是明明C++已原创 2022-04-11 10:22:18 · 342 阅读 · 8 评论 -
C++类和对象---(中)
在了解什么是构造函数之前,需要先知道C++中都有哪些数据类型。C++中的两种类型1.内置数据类型:如int,char,指针,数组,double等等2.自定义类型:struct/class 定义的类型。构造函数在写数据结构的时候,经常需要对其进行初始化操作,但是免不了会忘记了对其进行初始化操作,C++为了避免这一类情况,提出了构造函数这一概念。构造函数是一个特殊的成员函数,函数名与类名相同,实例化对象时由编译器自动调用,需要注意的是,构造函数的虽然名称叫构造,但是构造函数的主要任务并不是原创 2022-03-17 15:24:22 · 1365 阅读 · 17 评论 -
C++类和对象(上)
面向对象和面向过程C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成就拿外卖来举例,C语言关注的是外卖的点餐,送餐。而C++关注的是点餐的人,送餐的人之间的联系。类的引入我们知道在C语言中有结构体这种结构strutc student{int a;string name;};在结构体里我们声明变量。从前在C语言中定义一个结构体的对象需要这样:struct st原创 2022-03-15 11:08:20 · 1093 阅读 · 9 评论 -
C++引用及其底层原理
文章目录引用引用的注意事项引用做参数引用引用的注意事项引用做参数在讲引用做参数之前,我们先需要了解一下,参数传值和传引用的区别。如上图所示,这段代码调用func函数时使用的是传递的是值。...原创 2022-03-13 16:59:07 · 5099 阅读 · 10 评论 -
C++命名空间,缺省参数,函数重载底层原理
文章目录为何需要用到命名空间命名空间的定义命名空间的三种使用方式编译器查找数据的过程缺省参数全缺省与半缺省为何需要用到命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或者名字的污染。namespace关键字的出现就是针对这种问题的。命名空间的定义格式namespace+命名空间的名字{括号里填写命名空间想要设置的内容}如:namespac原创 2022-03-01 10:41:22 · 1122 阅读 · 18 评论