欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

组合与继承

程序员文章站 2024-03-16 20:55:10
...

    在面向对象编程(OOP)和面向对象设计(OOD)中,类与类之间有三大关系,分别是继承(Inheritance)、复合(Composition)和委托(Delegation)。

一、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();}
};
template <class T>
class queue
{
  ...
protected:
  deque<T> c;  //底层容器
public:
  ...
};
组合与继承
组合与继承
二、Delegation(委托)
组合与继承

三、Inheritance(继承),表示is-a

struct _List_node_base
{
  _List_node_base* _M_next;
  _List_node_base* _M_prev;
};

template<typename _Tp>
struct _List_node
  : public _List_node_base  //表示继承关系
{
  _Tp _M_data;
};
组合与继承
组合与继承