杨过小龙女玉女心经篇--简单工厂模式

杨过小龙女玉女心经篇--简单工厂模式,第1张

杨过小龙女玉女心经篇--简单工厂模式
Mountain:终南山
Single_arm:杨过
Little_dragon_maiden:小龙女
Jade girl's Heart Sutra:玉女心经
Dust_world:尘世
being  silent and your palm:黯然销魂掌
#include 
#include 
using namespace std;

enum MARTIAL
{
    single_arm,
    little_dragon_maiden
};

class Mountain
{
public:
    int test_int = 3;
    virtual void show() = 0;
};
class Single_arm : public Mountain
{
public:
    Single_arm(int param_test = 0)
    {
        this->test_int = param_test;
    }

private:
    void show();
};

void Single_arm::show()
{
    cout << "being  silent and your palm" << endl;
}

class Little_dragon_maiden : public Mountain
{
private: //并不会限制show()函数
    void show();
};

// void Little_dragon_maiden::show_again()
// {
//     cout << "again_show" << endl;
// }

void Little_dragon_maiden::show()
{
    cout << "Jade girl's Heart Sutra" << endl;
}

class Dust_world
{
public:
    static Single_arm* p_Single_arm;
    static Little_dragon_maiden* p_Little_dragon_maiden;
    static Mountain* character(MARTIAL type);
};
Single_arm* Dust_world::p_Single_arm = NULL;
Little_dragon_maiden* Dust_world:: p_Little_dragon_maiden = NULL;
Mountain* Dust_world::character(MARTIAL type)
{
    if(type == single_arm)
    {
        if(p_Single_arm == NULL)
        {
            p_Single_arm = new Single_arm(6);
        }
        return p_Single_arm;
    }
    if(type == little_dragon_maiden)
    {
        if(p_Little_dragon_maiden == NULL)
        {
            p_Little_dragon_maiden = new Little_dragon_maiden;
        }
        return p_Little_dragon_maiden;
    }
}

int main(void)
{
    Mountain* p_Mounuain = Dust_world::character(MARTIAL::single_arm);
    Mountain* p_Mounuain_2 = Dust_world::character(MARTIAL::little_dragon_maiden);
    cout << "test_int : " << p_Mounuain->test_int << endl;
    cout << "test_int : " << Dust_world::p_Single_arm->test_int << endl;

    p_Mounuain->show();
    p_Mounuain_2->show();
    //可访问
    //虚函数表可见性
    Dust_world::character(MARTIAL::single_arm)->show();
    delete Dust_world::p_Single_arm;
    delete Dust_world::p_Little_dragon_maiden;
    cout << "hello friend !" << endl;
    //不可访问
    // Single_arm* test_p_Single_arm = new Single_arm(0);
    // test_p_Single_arm->show();
    //不可访问
    // Single_arm sigle_arm;
    // sigle_arm.show();
    return 0; 
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5651834.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存