练习|原型模式

本文探讨了设计模式中的原型模式原理,通过C++代码示例详细解释了如何使用拷贝构造函数实现对象的克隆,展示了如何快速创建多个相同实例的过程。

原型模式:当需要创建多个参数相同的实例时,只需要创建一个,其他的调用clone()即可。clone():

创建当前对象的浅表副本。方法创建一个新对象,然后将当前对象的非静态字段复制到该新对象。若当前对象是值类型,则逐位复制;若为引用或指针,则复制引用或指针而不复制对象。——《大话设计模式》

用C++实现模型模式可以直接用拷贝构造函数

#include <iostream>
#include <string>
using namespace std;

class Resume
{
public:
	Resume(): _name("??"), _exper("??") { }
	Resume(const string& name, const string& exper): _name(name), _exper(exper) { }
	Resume(const Resume& r) { _name = r._name; _exper = r._exper; }
	string get_name() const { return _name; }
	string get_exper() const { return _exper; }
private:
	string _name, _exper;
};

int main()
{
	Resume r1, r2, r3;
	r1 = Resume("irene", "none");
	r2 = Resume(r1);
	r3 = Resume(r1);
	cout << "the experience of " << r1.get_name() << " is " << r1.get_exper() << endl;
	cout << "the experience of " << r2.get_name() << " is " << r2.get_exper() << endl;
	cout << "the experience of " << r3.get_name() << " is " << r3.get_exper() << endl;
	return 0;
}

输出:

the experience of irene is none
the experience of irene is none
the experience of irene is none

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值