原型模式-c++实现
来源:互联网 发布:如何提高淘宝店流量 编辑:程序博客网 时间:2024/05/19 15:21
// CplusplusPrototype.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<iostream>#include<vector>#include<string>#include<assert.h>using namespace std;//父类 class Resume{protected:char *name;public:Resume() {}virtual ~Resume() {}virtual Resume* Clone() { return NULL; }virtual void Set(char *n) {}virtual void Show() {}};class ResumeA : public Resume{public:ResumeA(const char *str); //构造函数 ResumeA(const ResumeA &r); //拷贝构造函数 ~ResumeA(); //析构函数 ResumeA* Clone(); //克隆,关键所在 void Show(); //显示内容 };ResumeA::ResumeA(const char *str){if (str == NULL) {name = new char[1];name[0] = '\0';}else {name = new char[strlen(str) + 1];strcpy_s(name, strlen(str) + 1,str);}}ResumeA::~ResumeA() { delete[] name; }ResumeA::ResumeA(const ResumeA &r) {name = new char[strlen(r.name) + 1];strcpy_s(name, strlen(r.name) + 1, r.name);}ResumeA* ResumeA::Clone() {return new ResumeA(*this);}void ResumeA::Show() {cout << "ResumeA name : " << name << endl;}class ResumeB : public Resume{public:ResumeB(const char *str); //构造函数 ResumeB(const ResumeB &r); //拷贝构造函数 ~ResumeB(); //析构函数 ResumeB* Clone(); //克隆,关键所在 void Show(); //显示内容 };ResumeB::ResumeB(const char *str){if (str == NULL) {name = new char[1];name[0] = '\0';}else {name = new char[strlen(str) + 1];strcpy_s(name, strlen(str) + 1,str);}}ResumeB::~ResumeB() { delete[] name; }ResumeB::ResumeB(const ResumeB &r) {name = new char[strlen(r.name) + 1];strcpy_s(name, strlen(r.name) + 1, r.name);}ResumeB* ResumeB::Clone(){return new ResumeB(*this);}void ResumeB::Show() {cout << "ResumeB name : " << name << endl;}int main(){Resume *r1 = new ResumeA("A");Resume *r2 = new ResumeB("B");Resume *r3 = r1->Clone();Resume *r4 = r2->Clone();r1->Show(); r2->Show();//删除r1,r2 delete r1; delete r2;r1 = r2 = NULL;//深拷贝所以对r3,r4无影响 r3->Show(); r4->Show();delete r3; delete r4;r3 = r4 = NULL;return 0;}
0 0
- 【C++】Chapter6:原型模式
- Objective C--原型模式
- Objective C 原型模式
- Objective C--原型模式
- 【C++】原型模式
- 原型模式(C++)
- C#实现原型模式
- php实现原型模式
- C++实现原型模式
- 原型模式lua实现
- 原型模式C++实现
- 原型模式C++实现
- 原型模式实现
- 原型模式-c++实现
- 实现设计模式:原型模式
- 常见设计模式解析和实现(C++)Prototype模式(原型模式)
- 常见设计模式解析和实现(C++)Prototype模式(原型模式)
- javascript原型模式实现OOP
- 03_XML DOM 节点
- 04_XML DOM 节点树
- 2016 UESTC Training for Dynamic Programming Q - 柱爷的宝藏 斜率优化
- 05_XML DOM 解析器
- 06_XML DOM 加载函数
- 原型模式-c++实现
- 07_XML DOM - 属性和方法
- 08_XML DOM - 访问节点
- android开发笔记之自定义组合控件
- POJ1008 模拟
- 属性动画(property)
- 09_XML DOM 节点信息
- 10_XML DOM 节点列表
- python中类方法,静态方法和实例方法的区别