C++ 学习笔记(23)Prototype Pattern

版权声明:如若转载,注明出处即可 https://blog.csdn.net/nishisiyuetian/article/details/82768496

Prototype Pattern

原型模式

好博客 原型模式很简单,关键就是通过基类指针调用派生类的 copy constructor

#include <iostream>
#include <memory>
#include <string>

class Base {
public:
	virtual ~Base() = default;

	virtual Base* clone() = 0;
} ;

class Derived_1 : public Base {
public:
	Derived_1() = default;

	Derived_1(const Derived_1 &) { /*  */ }

	Derived_1* clone() override {
		return new Derived_1(*this);   // 间接调用 copy constructor
	}
} ;

int main(int argc, char const *argv[]) {
	Derived_1 *proType = new Derived_1();
	Base *ptr1 = proType->clone();
	Base *ptr2 = proType->clone();

	delete proType, delete ptr1, delete ptr2;
	proType = nullptr, ptr1 = ptr2 = nullptr;
	return 0;
}

适用场景(1)直接利用 copy constructor 减少 constructor 的使用(减少初始化参数的传递,消耗等)

注意点:(1)深拷贝和浅拷贝

猜你喜欢

转载自blog.csdn.net/nishisiyuetian/article/details/82768496