zoukankan      html  css  js  c++  java
  • 设计模式-Prototype(通过复制构造函数实现自我复制)-(创建型模式)

    以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码

    //Prototype.h

    #pragma once
    class Prototype {
    public:
        virtual ~Prototype();
        virtual Prototype* clone() const = 0;
    protected:
        Prototype();
    private:
    };
    
    class concreatePrototype :public Prototype {
    public:
        concreatePrototype();
        ~concreatePrototype();
        concreatePrototype(const concreatePrototype& cp);
        Prototype* clone()const;
    private:
    protected:
    
    };

    //Prototype.cpp

    #include"Prototype.h"
    #include<iostream>
    #include<string>
    Prototype::Prototype(){}
    Prototype::~Prototype(){}
    Prototype* Prototype::clone()const {
        return 0;
    }
    concreatePrototype::concreatePrototype(){}
    concreatePrototype::~concreatePrototype(){}
    concreatePrototype::concreatePrototype(const concreatePrototype& cp) {
        std::cout << "ConcreatePrototype Copy." << std::endl;
    }
    Prototype* concreatePrototype::clone()const
    {
    
        return (new concreatePrototype(*this));
    }

    //main.cpp

    #include"Prototype.h"
    
    int main(int args, char* argv)
    {
        Prototype* p = new concreatePrototype();
        Prototype* p_clone = p->clone();
        return 0;
    }
  • 相关阅读:
    Swift 懒加载
    Swift 模型属性
    Swift 循环引用
    Two Sum
    Best Time to Buy and Sell Stock II
    Best Time to Buy and Sell Stock I
    Pascal's Triangle II
    杨辉三角(数组)
    Merge Sorted Array 合并数组
    Plus One
  • 原文地址:https://www.cnblogs.com/fourmi/p/12075320.html
Copyright © 2011-2022 走看看