和“public继承”带有is-a的意义类似,复合意味着has-a或is-implemented-in-term-of。
has-a属于应用域部分:程序中的对象其实相当于你所塑造的世界中的某些事物,例如人、汽车、一张张视频画面等等。
is-implemented-in-term-of属于实现域:是实现细节上的人工制品,像是缓冲区、互斥器、查找树等。
区分“public继承”和复合
1.has-a和is-a的区别很好辨别:
is-a:学生是一个人;
has-a:人有一个名称;不能说人是一个名称。
2.is-implemented-in-term-of和is-a的区别:
好吧,其实我也只是隐约知道这两个并不一样,具体怎么区别也没什么头绪,详情见《Effective C++》item38.掰掰