首页 > 代码库 > 设计模式——原型模式(C++实现)
设计模式——原型模式(C++实现)
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 class CPrototype 7 { 8 public: 9 CPrototype()10 {11 12 }13 CPrototype(int iAge): m_iAge(iAge)14 {15 16 }17 virtual CPrototype* Clone() = 0;18 19 int m_iAge;20 };21 22 class CConcretePrototypeA: public CPrototype23 {24 public:25 CConcretePrototypeA(int iAge, const string& strName):CPrototype(iAge), m_strName(strName)26 {27 28 }29 30 // virtual CPrototype* Clone()31 virtual CConcretePrototypeA* Clone()32 {33 return new CConcretePrototypeA(*this);34 }35 36 private:37 CConcretePrototypeA(const CConcretePrototypeA& tmp)38 {39 this->m_iAge = tmp.m_iAge;40 this->m_strName = tmp.m_strName;41 }42 43 public:44 string m_strName;45 };46 47 int main(int argc, char* argv[])48 {49 // CPrototype* pstTypeA = new CConcretePrototypeA(30, "lisi");50 // CPrototype* pstTypeB = pstTypeA->Clone();51 52 CConcretePrototypeA* pstTypeA = new CConcretePrototypeA(30, "lisi");53 54 CConcretePrototypeA* pstTypeB = pstTypeA->Clone();55 pstTypeB->m_iAge = 40;56 pstTypeB->m_strName = "zhangsan";57 58 cout<< "pstTypeA.m_iAge: "<< pstTypeA->m_iAge<< "\tpstTypeA.m_strName "<< pstTypeA->m_strName<< endl;59 cout<< "pstTypeB.m_iAge: "<< pstTypeB->m_iAge<< "\tpstTypeB.m_strName "<< pstTypeB->m_strName<< endl;60 61 delete pstTypeA;62 delete pstTypeB;63 64 return 0;65 }66 ////////////////////////////////67 [root@ ~/learn_code/design_pattern/7_proto_type]$ ./protoType 68 pstTypeA.m_iAge: 30 pstTypeA.m_strName lisi69 pstTypeB.m_iAge: 40 pstTypeB.m_strName zhangsan
设计模式——原型模式(C++实现)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。