勿在浮沙筑高台--P11面向对象

2021-01-30  本文已影响0人  Catherin_gao

面向对象的编程

一. 复合 Composition 表示has-a

设计模式:Adapter

template<class T, class Sequence = deque<T> >
class queue{
  ...
protected:
   deque<T> c;   //底层容器
public:
  // 以下完全利用c的操作函数完成
  bool empty() const {return c.empty(); }
  size_type size() const {return c.size(); }
  reference front() {return c.front();}
  //deque是两端可进去
  reference back() {return c.back();}
  //
  void push(const value_type& x) { c.push_back(x); }
  void pop() { c.pop_front(); }
}

1.1 复合关系下的构造和析构

二. 委托 Delegation. Composition by reference

// file String.hpp

class StringRep;
class String{
public:
      String();
      String(const char* s);
      String(const String& s);
      String &operator=(const String& s);
      ~String();
....
private:
      StringRep* rep;  //pipml
};
file string.cpp
#include "String.hpp"
namespace{
class StringRep{
friend class String;
   StringRep(char* s);
   ~StringRep();
   int count;
   char* rep;
};
}

三. 继承 Inheritance,表示is-a

class _List_node_base
{

};
class _List_node
    :public _List_node_base
{
   __Tp _M_data;
};
上一篇下一篇

猜你喜欢

热点阅读