网站建设毕业设计任务书,南京市玄武区建设局网站,郑州免费建站,响应式网站模板是什么原因前言
今天主要讲类相关概念。
构造和析构函数是否可以抛出异常
在构造函数中抛出异常#xff0c;控制权会转出构造函数之外#xff0c;对象的析构函数不会被调用#xff0c;造成内存泄漏。 如果析构函数中抛出异常#xff0c;而且没有在当地捕捉#xff0c;析构函数便执…前言
今天主要讲类相关概念。
构造和析构函数是否可以抛出异常
在构造函数中抛出异常控制权会转出构造函数之外对象的析构函数不会被调用造成内存泄漏。 如果析构函数中抛出异常而且没有在当地捕捉析构函数便执行不全。
类如何实现只能静态或动态分配
只能静态分配把new\delete 运算符重载为private属性 只能动态分配把构造和析构函数设置为protect属性用子类动态创建。
什么时候需要初始化列表
初始化引用成员变量初始化const成员变量调用有一组参数的基类构造函数、调用有一组参数的成员构造函数。
哪些函数不能是虚函数
构造函数、内联函数、静态函数、友元函数、普通函数
简单介绍STL
STL一共提供六大组件有容器、算法、迭代器、仿函数、配接器、配置器彼此可以组合套用容器通过配置器取得存储空间算法通过迭代器存取容器内容仿函数协助算法完成不同策略配接器可以应用于容器。 容器是封装好的各种数据结构。 算法是各种常用的算法可以对容器内的数据操作。 迭代器是将一些指针相关操作重载的类模板。 仿函数是一种重载了的类模板可以帮助算法实现不同策略 配接器用来修饰容器 配置器负责空间配置与管理。
vector
也叫动态数组是线性存储的。随着元素的加入内部机制会自动扩充空间以容纳新元素。当有新元素加入时如果空间足够则直接插入如果空间不足则容量扩充至两倍。扩充是重新申请一块连续空间将原有的数据拷贝到新空间中扩充后原有的迭代器会失效。
list
list是一个双向链表每次插入或删除一个元素原有的迭代器不会失效。
deque
deque是一种双向开口的连续线性空间支持从头尾两端进行元素插入或删除操作。deque动态的以分段连续空间组合而成随时可以添加一段新的空间并连接起来。
stack
是一种先进后出的数据结构只有一个出口允许从最顶端增加或删除元素。
queue
是一种先进先出的数据结构允许从最底端加入元素从顶端取得元素。
heap
不属于STL组件而是作为priority_queue的助手,priority_queue 允许用户以任何次序将元素推入容器取出时一定是从优先级最高的元素开始取。
map和set
map和set都是关联容器底层是红黑树。 map中的元素是键值对关键字起索引的作用值表示与索引相关的数据。map允许修改值不允许修改键。支持下标访问如不存在则加入对应的键值对。 set是关键字的集合set每个元素只包含键不允许修改。
stl迭代器删除元素
vector和deque使用erase后后面每个元素的迭代器都会失效erase后返回下一个有效的迭代器。 map和set使用erase后当前元素迭代器失效不影响下一个元素的迭代器。 list使用erase后不影响下一个元素的迭代器同时也会返回下一个有效的迭代器。
迭代器的作用
迭代器用于提供一种方法顺序访问一个聚合对象中各个元素而不需要暴露该对象的内部表示。 迭代器不是指针是类模板表现得像指针模拟了指针的一些功能封装了原生指针提供比指针更高级的功能。
resize和reserve
resize改变容器内含有元素的数量。当原来的size小于resize的值则容器新增reszie-size个元素元素的值默认为0。 reserve用于改变容器的最大容量不会生成元素如果reseve的值大于capacity则重写申请一块足够的内存把原有的对象复制过来销毁之前的内存。
后记
雄关漫道过关斩将你的努力不会白费。