c++必知必会-2

2、多态。多态类型就是带有虚函数的类类型。多态对象则是不仅有一种类型的对象,而“多态基类”则是一个为满足多态对象的使用需求而设计的基类。

一个多态类型,从基类继承的最重要的东西就是它们的接口,而不是它们的实现。事实上,一个基类仅仅由接口组成不但常见,而且通常是我们所希望的【这话,并不是很了解。例子呢?】一个多态基类可以理解为一份契约。这一基类对其接口的用户做了某些承诺【语法承诺,即特定的成员函数可以通过一些特定类型的实参进行调用】。基类可以不知道除自身以外的任何事物。基类可以看成派生类的接口,派生类可以看成是基类的实现。从实践角度看,对其接口的设计要考虑预期用户的需求,并且应该以这样的方式进行设计:派生类可以很容易地推知并实现其契约。基类应该对派生类的具体细节全然不知,知道这些会不可避免地致使在类层次结构上添加或删除派生类变得困难。


3、设计模式。实践角度看,设计模式具备两属性:描述了经过验证的、成功的设计技术。再者就是在提及某个特定模式的应用时,不仅包括其中用到的技术,还包括应用该模式的动因以及应用后所达到的效果。

使得面向对象设计文档化,交流以及高效地评估。为的是有效地准确地描述我们的设计。使得,复杂面向对象设计的技术得以以一个共享的、通用术语的方式表达出来,以为整个编程社群所用。设计模式,就是为了可以像描述算法设计那样高效、毫无歧义地描述面向对象设计。

一旦设计完成后,甚至你的经理都能够理解完整的设计方案,只要他具备一些必需的模式方面的知识。以前我一直没有看过关于设计模式方面的书,也不理解什么是设计模式和为什么需要设计模式。现在,通俗的话说设计模式是程序员之间的“黑话”,它与使用的平台、语言毫无关系,它指的是你在制作程序时的一种构想或方法,而这些构造方法都是大家熟知的、经过验证的、有效的、高效率的。


条款4-STL:

STL并不仅仅是一个库,更是一种优秀思想以及一套约定。

STL(标准模板库)包含三大组件:容器、算法和迭代器。容器用于容纳和组织元素;算法执行操作;迭代器则用于访问容器中的元素。STL的优秀思想体现在:容器与在容器上执行的算法之间无需彼此了解,这种戏法是通过迭代器实现的。

迭代器类似于指针(实际上指针就是一种STL迭代器)。与指针一样,迭代器可以指向序列中的一个元素,也可以对其进行解引用(dereference),以便获得它所指向的对象值。可以像操作指针那样操作迭代器,使其指向序列中不同的元素。STL迭代器既可以是预定义的指针,也可以是用户自定义的类类型。当然,这种类型需要重载适当的操作符,以便与预定义指针拥有相同的使用语法。

STL容器是对数据结构的一种抽象,以类模板的方式实现而成。由于具有不同的数据结构,因此不同的容器以不同的方式来组织其元素,以便对存取或操作进行优化。STL定义了7个(算上string则是8个)标准容器。【<vector>,<list>,<deque>,<set>,<map>,<stack>和<queue>

STL算法是对函数的抽象,采用函数模板实现。一般STL算法处理一个或多个序列的值,其中每一个序列由一对有序的迭代器定义。其中第一个迭代器指向序列的第一个元素,而第二个迭代器指向序列最后一个元素之后的那个位置【不是最后一个元素】。若是两个迭代器指向同一位置,那么它们就定义了一个空序列。

迭代器提供的是一种使容器和算法协同工作的机制。容器可以生成一对迭代器来指定一个元素序列,而算法则对该序列进行操作。通过如此,容器和算法紧密协作,同时还可以保持彼此不知情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值