复合

和“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.掰掰

原文地址:https://www.cnblogs.com/qiushuixiaozhanshi/p/5714475.html