摘要:
纯虚函数 虚函数是为了重载和多态的需要,子类中可以重写或不重写该函数;纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像Java中的interface。 纯虚函数引入原因:在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常 阅读全文
摘要:
C++的一件困难事情:不太容易从程序代码看出表达式的复杂度。 执行期语意学,即在程序执行时,编译器产生而外的指令调用,确保对象的构造,内存的释放,以及类型转换与临时对象的生成的安全进行。 对象的构造和析构 一般而言,我们会把对象尽可能放置在使用它的那个程序区段附近,这样做可以节省不必要的对象产生操作 阅读全文
摘要:
template 在C++发明阶段,C++之父Stroustrup和贝尔实验室的C++小组对原先的宏方法进行了修订,对其进行了简化并将它从预处理范围移入了编译器。这种新的代码替换装置被称为模板,而且它变现了完全不同的代码重用方法:模板对源代码重用,而不是通过继承和组合重用对象代码。当用户使用模板时, 阅读全文
摘要:
定义抽象的concepts,并根据抽象的concepts来撰写算法与数据结构,是泛型编程的本质。 运用STL时的几个最重要的观念: 1.所谓使用STL,就是去扩充它。 2.STL的算法和容器是独立分离的。 3.无须继承。 4.抽象化并不意味效率低。 STL所实现的,是依据泛型思维架设起来的一个概念结 阅读全文
摘要:
Allocator译为空间配置器而不是内存配置器,是因为空间也可以是磁盘或其它辅助介质。 考虚到小型区块所可能造成的内存破碎问题,SGI设计了双层级配置器,第一级配置器直接使用malloc()和free(),第二级配置器则视情况采用不同的策略:当配置区块超过128bytes时,视之为“足够大”,便调 阅读全文
摘要:
《设计模式》中Iterator模式定义为:提供一种方法,使之能够依序巡访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式。 智能指针 迭代器是一种行为类似指针人对象。而指针的各种行为中最常见也最重要的便是内容提领(*)和成员访问(->),迭代器最重要的编程工作就是对这两个操作进行 阅读全文
摘要:
STL容器分两种:序列式容器,关联式容器。 上图以内缩方式来表达基层与衍生层的关系。 heap内含一个vector,priority-queue内含一个heap、stack和queue都含一个deque,set/map/multiset/multimap都内含一个RB-tree,hash_x都内 阅读全文
摘要:
所有泛型算法的前两个参数都是一对迭代器,通常称为first和last,用以标示算法的操作区间。STL习惯采用前闭后开区间,写成[first,last),表示区间涵盖first至last(不含last)之间的所有元素。当first==last时,上述所表现的便是一个空区间。 参考:《STL源码剖析》 阅读全文
摘要:
仿函数其实上就是一个“行为类似函数”的对象。仿函数可以让STL算法有更灵活的演出。 c++11中已经引入lamda表达式,相当于将这部分内容加入了语法。 阅读全文
摘要:
配接器在STL组件的灵活组合运用功能上,扮演着轴承、转换器的角色。Adaper这个概念,事实上是一种设计模式。在《设计模式》中adapter定义如下:将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes,可以一起运作。 配接器分为 function ada 阅读全文