练习|原型模式

原型模式:当需要创建多个参数相同的实例时,只需要创建一个,其他的调用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值