美文网首页
20.C++设计模式-原型模式

20.C++设计模式-原型模式

作者: 任振铭 | 来源:发表于2019-09-24 08:54 被阅读0次
图片.png
#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;


class Person {
public:
    virtual Person* Clone() = 0;
    virtual void print() = 0;
};

class CPPProgramer :public Person {
public:
    CPPProgramer() {
        this->name = "";
        this->age = 0;
        this->resume = NULL;
    }

    CPPProgramer(string name,int age) {
        this->name = name;
        this->age = age;
        this->resume = NULL;
    }
    ~CPPProgramer() {
        if (resume != NULL) {
            free(resume);
            resume = NULL;
        }
    }
    virtual CPPProgramer* Clone() {
        CPPProgramer* p = new CPPProgramer;
        p->age = this->age;
        p->name = this->name;
        if (this->resume != NULL) {
            p->resume = new char[strlen(this->resume) + 1];
            strcpy(p->resume, this->resume);
        }
        //*p = *this;
        return p;
    }

    void setResume(const char* resume) {
        this->resume = new char[strlen(resume) + 1];
        strcpy(this->resume, resume);
    }

    virtual void print() {
        cout << "name=" << name << " age =" << age << endl;
        if (resume != NULL) {
            cout << "resume:"<<resume << endl;
        }
    }

private:
    string name;
    int age;
    char* resume;
};

void main() {
    CPPProgramer p("张三", 23);
    p.setResume("c++程序员");
    CPPProgramer* p2 = p.Clone();
    p2->print();
    delete p2;

    system("pause");
}

相关文章

网友评论

      本文标题:20.C++设计模式-原型模式

      本文链接:https://www.haomeiwen.com/subject/gwrvuctx.html