栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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; 
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/649642.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号