Effective C++ 第三十八条 Model “has-a” or “is-implemented-in-terms-of

通过复合塑膜出 has-a 或“根据某物实现出”
先明确 has-a 和 is-a 的区别,前面介绍过,public 继承就是 is-a,是一个对象相对于抽象的性质,而 has-a 不同,has-a 表示有但不只有,比如人有名字,但是人不只有名字,名字相对于人来说就是 has-a 。当我们需要使用一个类完成某个任务的时候,可以通过嵌入一个其他的类使之替代完成。这就叫做复合(composition)。
比如我们用 deque 来实现 stack,这里不采用标准库(STL),就是简简单单的模拟一下。
把 deque 作为工具来实现 stack 这就是 has-a 或者 is-implemented-in-terms-of,has-a 和 is-implemented-in-terms-of 是同一概念在不同地方使用的称呼。stack 有 string (应用域)叫做 has-a,通过 deque 来实现 push、pop、top 等在实现域的叫做 is-implemented-in-terms-of。