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

Mountain:终南山
Single_arm:杨过
Little_dragon_maiden:小龙女
Jade girl's Heart Sutra:玉女心经
Dust_world:尘世
being  silent and your palm:黯然销魂掌
#include <iostream>
#include <string>
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; 
}

哎呦喂ヾ(✿゚▽゚)ノ~路长馆小,雪轻帘薄,酒热乎,这位爷~您ヾ(✿゚▽゚)ノ~ 里面坐~
本公众号专注分享C++,ffmpeg,opencv等相关音视频知识
webrtc,udp,tcp,rtsp,rtmp,srt/nginx+rtmp等流媒体协议和服务器
同时也会有大厂音视频技术专家不定期直播分享…
国人开发流媒体srs服务器,及yangrtc(国人版的webrtc)协议新动向
偶尔分享下程序员梦呓碎碎念(๑•॒̀ ູ॒•́๑)啦啦啦
目前刚刚开通,接受读者的优质投稿…
鉴于国内音视频圈子小,起步晚,以致分享少,门槛高,特开通分享,一起扇动这阵风吧!
微信扫描下方二维码,关注公众号,赶快进入音视频开发者社区吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

、、、、燕庆伟、、、、

分享对你有帮助,打赏一下吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值