组合与继承
程序员文章站
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;
};
上一篇: 面试题:第一次只出现一次的字符
下一篇: Android端常见加密算法