C++设计模式-(创建模式)原型模式

 

原型模式主要用于 复制当前对象的副本 

#include<iostream>
class animal
{
public:
    virtual ~animal()
    {}
    virtual void eat()
    {
        std::cout << "不确定" << std::endl;
    }
    //克隆函数
    virtual animal* clone()
    {
        animal* t = new animal();
        //一些成员复制
        return t;
    }
};

class  tiger :public animal
{
    virtual ~tiger()
    {
    }
    virtual void eat()
    {
        std::cout << "吃肉" << std::endl;
    }
    //克隆函数
    virtual tiger* clone()
    {
        
        tiger* t = new tiger;
        //一些成员复制
        return t;
    }
};

class sheep :public animal
{
    virtual ~sheep()
    {}
    virtual void eat()
    {
        std::cout << "吃草" << std::endl;
    }
    //克隆函数
    virtual sheep* clone()
    {
        sheep* t = new sheep;
        //一些成员复制
        return t;
    }
};

int main()
{
    //下面是使用克隆的方式 
  //也就是原型模式
animal* a = new tiger; a->eat(); animal* a2 = a->clone(); a2->eat(); //下面是使用拷贝构造的方式 animal* a3 = new animal(*a); a3->eat(); return 0; }

 

posted @ 2022-11-13 16:40  Atggg  阅读(48)  评论(0)    收藏  举报