原型模式主要用于 复制当前对象的副本
#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; }
标签:virtual,C++,原型,模式,animal,设计模式,eat From: https://www.cnblogs.com/atggg/p/16886260.html