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

面向对象的编程

  • 继承 Inheritance
  • 复合 Composition
  • 委托 Delegation

一. 复合 Composition 表示has-a

设计模式:Adapter

  • queue 包含deque
  • queue中所有功能deque都有实现
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

  • 有一个指针指向另一个类, 设计模式:Handle/Body(pImpl)
  • class String客户使用,可以把两个类的实现拆分
// 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;
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容