zoukankan      html  css  js  c++  java
  • C plus plus day4 组合与继承 虚函数

    复合  has a

    Adapter设计模式

    //Adapter
    template <class 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();}
        reference back(){return c.back();}
        void push(const value_type& x){c.push_back(x);}
        void pop(){c.pop_front();}
        
    };

     复合关系下的构造函数和析构函数

                                                                         

    左边拥有右边

    构造函数执行是由内而外

    即Container的构造函数搜先调用Component的default构造函数 然后才执行自己。

    析构函数执行是由外而内

    container的析构函数首先执行自己,然后再调用component的析构函数

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

    继承关系下的构造函数和析构函数

     

    构造由内而外

    子类的构造函数先调用父类的构造函数,然后再执行自己

    析构由外而内

    子类的析构函数首先执行自己,然后再调用父类的析构函数

     虚函数

    class Shape{
    public:
        virtual void draw() const =0;    pure virtual  子类必须去定义
        virtual void error(const std::string& msg); impure virtual
        int objectID() const; non-virtual
    }
    class Rectangel:public Shape{...};
    #include <iostream>
    using namespace std;
    class CDocument
    {
    public:
        CDocument();
        void OnFileOpen()
        {
            cout<<'' <<endl;
            ...
            Serialize();  当子类执行到这里时 会调用自己的 virtual func 然后返回父类 继续执行后面的
            ...
        }
        virtual void Serialize(){};
        
    };
    class CMydoc : public CDocument
    {
    public:
        CMydoc();
        virtual void Serialize(){
            ...
        }
        
    };
    int main()
    {
        /* code */
        CMydoc mydoc;
        mydoc.OnFileOpen();
    }
  • 相关阅读:
    代码点与代码单元
    IIS最大并发连接数
    PhoneGap:JS跨域请求
    字符串长度
    android学习笔记:adb更换端口后成功启动
    java学习笔记:eclipse的workspace和working set
    java学习笔记:Eclipse打开现有项目
    java学习笔记:文件名区分大小写
    mysql学习笔记:存储过程
    mySql学习笔记:比sql server书写要简单
  • 原文地址:https://www.cnblogs.com/suizhixxie/p/10465566.html
Copyright © 2011-2022 走看看