zoukankan      html  css  js  c++  java
  • 设计模式之原型模式(prototype)

    原理:拷贝自身对象实际上就是调用的拷贝构造函数,注意事项是这里的拷贝是深拷贝,即需要拷贝指针所指的内容

    #include <stdio.h>
    #include <memory>
    #include <iostream>
    
    class Resume
    {
    public:
    	virtual Resume* Clone(){return NULL;}
    	virtual ~Resume(){}
    protected:
    	char *name;
    };
    
    class ResumeA:public Resume
    {
    public:
    	 ResumeA(const char* str);
    	 Resume* Clone();
    	 ResumeA(const ResumeA& r);
    	 ~ResumeA();	 
    };
    
    ResumeA::ResumeA(const char* str)
    {
    	if (str == NULL)
    	{
    		name= new char[1];
    		name[0] = '';
    	}
    	else
    	{
    		int length = strlen(str);
    		name = new char[length + 1];
    		strcpy(name,str);
    		name[length] = '';
    	}
    }
    
    ResumeA::ResumeA(const ResumeA& r)
    {
    	int length = strlen(r.name);
    	name = new char[length + 1];
    	strcpy(name,r.name);
    
    }
    Resume* ResumeA::Clone()
    {
    	return new Resume(*this);
    }
    
    int main()
    {
    	Resume* pObja= new ResumeA("abc");
    	Resume* pCloneObja= pObja->Clone();
    	delete pObja;
    	delete pCloneObja;
    	return 0;
    }
    
  • 相关阅读:
    磁盘管理之磁盘组成
    用户管理
    定时任务
    虚拟机安装centos6.9
    linux的文件属性与文件权限
    linux磁盘容量不足
    正则表达式与特殊符号
    linux三剑客与正则案例
    借用父构造函数继承属性
    myeclipse常用快捷键
  • 原文地址:https://www.cnblogs.com/liuweilinlin/p/3203096.html
Copyright © 2011-2022 走看看