#ifndef PTOTOTYPE_H
#define PTOTOTYPE_H

#include "spdlog/spdlog.h"

class GermaSoldier
{

public:
    GermaSoldier() {}
    virtual ~GermaSoldier() {}

    /* 克隆 */
    virtual GermaSoldier* clone() = 0;
    /* 展示 */
    virtual void show() = 0;

};


class Soldier66 : public GermaSoldier
{

public:
    Soldier66() {}
    Soldier66(const Soldier66& other) {}
    ~Soldier66() {}

    /* 克隆 */
    GermaSoldier* clone() override
    {
        /* 注意，这个实现需要依赖拷贝构造函数，注意拷贝构造函数的深拷贝和浅拷贝问题 */
        return new Soldier66(*this);
    }

    void show() override
    {
        SPDLOG_INFO("Soldier66");
    }

};




#endif /* Prototype */

