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

通過復合塑膜出 has-a 或“根據(jù)某物實現(xiàn)出”
先明確 has-a 和 is-a 的區(qū)別,前面介紹過,public 繼承就是 is-a,是一個對象相對于抽象的性質(zhì),而 has-a 不同,has-a 表示有但不只有,比如人有名字,但是人不只有名字,名字相對于人來說就是 has-a 。當我們需要使用一個類完成某個任務的時候,可以通過嵌入一個其他的類使之替代完成。這就叫做復合(composition)。
比如我們用 deque 來實現(xiàn) stack,這里不采用標準庫(STL),就是簡簡單單的模擬一下。
把 deque 作為工具來實現(xiàn) stack 這就是 has-a 或者 is-implemented-in-terms-of,has-a 和 is-implemented-in-terms-of 是同一概念在不同地方使用的稱呼。stack 有 string (應用域)叫做 has-a,通過 deque 來實現(xiàn) push、pop、top 等在實現(xiàn)域的叫做 is-implemented-in-terms-of。