版权声明:如若转载,注明出处即可 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)深拷贝和浅拷贝