zoukankan      html  css  js  c++  java
  • 代理模式以及operator>()的重载

    重载operator->()可以增加一些附加的操作,比如计数

    #include<iostream>
    using namespace std;

    class Image{
    public:
        void Draw(int a,int b)
        {
            cout<<"a="<<a<<"b="<<b<<endl;
        }
    };
    class Imageptr
    {
        public:
            Imageptr(char* name);
            virtual ~Imageptr();
            
            void Draw(int a,int b);
            void LoadImage();
            Image* operator->();//对他进行重载之后,调用的时候先调用这个
            Image& operator*();
        private:
            char* ImageFileName;
            Image* _image;
    };

    Imageptr::Imageptr(char* name)
    {
        ImageFileName=name;
        _image=0;
    }
    Imageptr::~Imageptr()
    {
        delete ImageFileName;
    }
    void Imageptr::LoadImage()
    {
        _image=new Image();
    }
    Image* Imageptr::operator->()
    {
        LoadImage();
    }
    Image& Imageptr::operator*()
    {
        LoadImage();
    }

    void Imageptr::Draw(int a,int b)
    {
        _image->Draw(a,b);
    }
    int main()
    {
        
        Imageptr p("zhang");
        p->Draw(1,2);
        
        
        
        system("pause");
        return 0;
    }

  • 相关阅读:
    *Reverse Linked List II
    *Insertion Sort List
    Convert Sorted List to Binary Search Tree
    Reverse Integer
    read cache return null
    纳秒和随机数
    libthread_db
    gdb
    tls session resumption
    http://www.linux-commands-examples.com/xmllint
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2502247.html
Copyright © 2011-2022 走看看