
c++总结
boke_fengwei
我不懒,我天天学习
展开
-
c++---list
list的介绍和使用list的模拟实现list和vector的对比list的介绍和使用list的介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于fo...原创 2019-06-23 21:34:09 · 186 阅读 · 0 评论 -
c++---继承
在继承这块我们从新下面的几个点去剖析c++中的继承继承的概念和定义基类和派生类对象赋值转换继承中的作用域派生类成员的默认成员函数继承和友元继承与静态成员继承的概念和定义继承的概念继承机制是面向对象程序设计使代码可以复用的最重要的手段,他允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生的类称为派生类。继承呈现了面向对象程序设计的层次结构,体现了简单到复杂的...原创 2019-07-08 23:47:37 · 153 阅读 · 0 评论 -
c++---菱形继承
单继承:一个子类只有一个父类时称为单继承多继承:一个子类有两个或者两个以上时这个继承关系为多继承菱形继承是多继承的一种特殊情况在继承中子类会继承父类的所有的成员,可以看出菱形继承有数据冗余和二义性的问题。Assistant中会有Person的两份数据。#include <iostream>#include <string>using namespace s...原创 2019-07-09 10:59:45 · 268 阅读 · 0 评论 -
c++---模板(下)
非类型模板参数类模板的特化类型萃取模板的分离编译非类型模板参数模板参数分类类型形参:出现在模板参数列表中,跟在class或者typename之后的参数类型名称。非类型形参:就是用常量作为类(函数)的一个参数,在类(函数)模板中可将该参数当成常量来使用namespace fw{ template<class T, size_t N = 10> class...原创 2019-07-06 22:45:44 · 194 阅读 · 0 评论 -
c++---类型转换
C语言中的类型转换C++强制类型转换为什么需要强制类型转换RTTI一,C语言中的类型转换在C语言中分为了两种类型转换,一种是隐式类型转换,但是隐式类型转换是相邻类型之间才可以进行隐式类型转换,比如我们的char可以转为int,这两种都是表示数值的。第二种是强制类型转换,强制类型转换需要在前面声明我们需要转换的。比如将int类型转换为int*#include <iostream...原创 2019-07-07 10:32:16 · 220 阅读 · 0 评论 -
c++---异常
C语言传统的处理错误的方式C++异常概念异常的用法自定义异常体系标准库异常体系异常的优缺点C语言传统的处理错误的方式传统的错误处理机制终止程序,比如assert,虽然能够及时的终止程序,但是用户难以接受,比如除0的时候我们只需要提示用户输入错误,不需要终止程序返回错误码,但是错误码不能够及时的让程序员明白是什么错误,需要自己去查询什么错误。C语言标准库中的setjmp...原创 2019-07-24 23:33:04 · 179 阅读 · 0 评论 -
C++---map、multimap的使用
基本概念Map的特性是,所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值。我们可以通过map的迭代器改变map的键值吗?答案是不行,因为map的键值关系到map元素的排列规则,任意改变map键值将会严重破坏map组织。如果想要修改元素的实值,那么是可以的。Map和lis...原创 2019-08-07 21:53:53 · 210 阅读 · 0 评论 -
c++---set/multiset的使用
set容器的概念Set的特性是。所有元素都会根据元素的键值自动被排序。Set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值。Set不允许两个元素有相同的键值。我们可以通过set的迭代器改变set元素的值吗?不行,因为set元素值就是其键值,关系到set元素的排序规则。如果任意改变set元素值,会严重破坏set组织。换句话说,set的iterator是一种const...原创 2019-08-11 22:32:24 · 529 阅读 · 0 评论 -
c++---stack和queue
stack的介绍和使用queue的介绍和使用priority_queue的介绍和使用容器适配器一,stack的介绍和使用介绍stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层...原创 2019-06-26 12:34:13 · 601 阅读 · 0 评论 -
c++---deque的使用
deque的介绍deque的使用deque的应用一, deque的介绍及使用deque的介绍deque(发音类似“deck”),是双端队列不规则的首字母缩写,双端队列是动态大小的序列式容器,其可 以像两端进行伸缩。特定的库可以以不同的方式实现deque,但通常都是一种动态数组。不论在何种情况下,它都允许通过 随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。因此,de...原创 2019-06-26 11:52:00 · 1583 阅读 · 0 评论 -
c++---Lambda表达式
C++11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。首先我们看看Lambda表达式的基本构成[ ]( )mutable ->return_type{statement;} 函数对象参数 mutable ->返回值{函数体}函数对象参数[],表示一个lambda的开始,这部分必须存在,不能省略。函数对象是传递给编译器自动生成的函数对象类的构造...原创 2019-05-05 21:25:40 · 321 阅读 · 0 评论 -
c++---类与对象上(概念丶封装丶this指针...)
1. 类和对象概念2. 怎么去定义一个类3. 类的实例化是什么4. 封装以及访问限定符5. 类的对象大小的计算6. 类成员函数的this指针是什么本节主要的内容就是上面的八个部分,这是学习我们c++的一个最重要的知识点,如果在这里理解不了我们的类和对象的话在后面就不能更好的理解c++的特性了。类和对象的概念在前期学习中我们都知道c语言是一门面向过程的语言,关注的是过程,而我们的...原创 2019-05-07 22:07:23 · 237 阅读 · 0 评论 -
c++---模拟实现日期类
在学习了类和对象的之后大多数都含有一个疑惑,为什么要学习我们的class ?因为类封装了我们的属性和方法,不只是在我们写的时候更加具有我们的可读性,也会让代码更加具有访问控制的约束。实现日期类,为什么要实现日期类,因为日期在我们的生活中随处可见,实现一个日期类只在使用的时候调用类以及类中的方法就好了,另一个原因是在常见的类型,比如数字等等都具有±*/等等的方法,但是日期类是我们自定义的类型,又怎...原创 2019-05-21 11:47:19 · 376 阅读 · 0 评论 -
c++---模板初始以及模板使用
什么泛型编程,模板函数模板类模板什么是泛型编程怎样去用一个函数去int交换数据,也许你会说这是如此的so easy,你看我的void swap(int &a,int &b){ int c = a; a = b; b = a;}这不就写好了吗,但是如果让你写一个double类型的交换函数呢,你可能也会说简单,但是实现一个函数交换自定义类型呢,没办法了吧!...原创 2019-05-21 13:06:39 · 2895 阅读 · 0 评论 -
c++---类和对象(六大默认成员函数)
类中默认的六个成员函数构造函数析构函数拷贝构造函数赋值操作符重载取地址和const取地址操作符重载const成员函数1. 类中默认的六个成员函数首先看看下面代码class A{};int main(){ A a; return 0;}这个代码并没有报错,也能正常的运行,那为什么我们都没有写构造函数也能对我们的类实例化。这是因为在类中含有默认的六个成员函数,包括了...原创 2019-05-22 11:38:26 · 3747 阅读 · 0 评论 -
c++---类和对象(初始化列表,友元函数,友元类,static成员,内部类)
- 初始化列表- static成员- 友元函数- 友元类- 内部类1. 初始化列表在先前学习的构造函数不能叫做我们的类的初始化,只能叫做我们类的赋值。因为我们的初始化只能初始化一次,而构造函数可以进行多次赋值初始化列表语法初始化列表:以一个冒号开始,接着是一个以都好分隔的数据成员列表,每一个成员变量的后面跟着一个括号中的初始值或者表达式class Cat{public:C...原创 2019-05-26 23:54:14 · 1041 阅读 · 0 评论 -
c++---string类的使用
string容器的基本概念string容器的常用操作string小小练习string容器的基本概念c风格字符串(以空字符结尾的字符数组)太过于复杂难于掌握,不太适合大程序的开发,c++在标准库定义一种string类,定义在头文件中- string和c风格字符串对比char是一个指针,string是一个类,string封装了char,管理这个字符串,是一个char型的容器。str...原创 2019-05-28 20:55:10 · 396 阅读 · 0 评论 -
c++---vector的使用
vector容器基本概念vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。Array是静态空间,一旦配置了就不能改变,要换大一点或者小一点的空间,可以,一切琐碎得由自己来,首先配置一块新的空间,然后将旧空间的数据搬往新空间,再释放原来的空间。Vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素。因此vector的运用对于内存...原创 2019-05-28 21:23:40 · 844 阅读 · 0 评论 -
c++---初始函数重载、缺省参数、命名空间等
c++的关键字命名空间c++自己的输入输出缺省参数函数重载引用内联函数rc++关键字c++的关键字包括了我们的asm、do、if、return、try、continue、auto、double、inline、short、typedef、for、bool、dynamic_case、int、signed、typeid、public、break、else、long、sizeof、...原创 2019-04-27 22:03:19 · 415 阅读 · 0 评论