C++面向对象编程与类之间的关系(继承、复合、委托)
1、复合(Composition)
2、继承(Inheritance)
3、委托 (Delegation)
4、虚函数
一、复合(Composition)表示 has-a
示例代码:
template <class T, class Sequence = deque<T> >
class queue {
...
protected:
Sequence c; // 底层的容器
public:
// 以下完全利用 对象c 的操作完成
bool empty() const { return c.empty(); }
size_type size() const { return c.size(); }
reference front() { return c.front(); }
reference back() { return c.back(); }
// deque 是兩端可進出,queue 是末端進前端出(先進先出)
void push(const value_type& x) { c.push_back(x); }
void pop() { c.pop_front(); }
}
我们分析上面一段代码,队列queue中有一个双端队列Sequence对象,我们称这种关系为复合。队列中大部分的函数底层的实现我们是复用的双端队列对象Sequence的函数。