美文网首页
勿在浮沙筑高台--P11面向对象

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

作者: Catherin_gao | 来源:发表于2021-01-30 11:07 被阅读0次

    面向对象的编程

    • 继承 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;
    };
    

    相关文章

      网友评论

          本文标题:勿在浮沙筑高台--P11面向对象

          本文链接:https://www.haomeiwen.com/subject/irbktltx.html