zoukankan      html  css  js  c++  java
  • [笔记]C++代码演示Singleton单类实例

    本文演示了如何无需显式声明一个类,直接通过“类名::GetInstance()”方式获得单类实例的指针。

    #include <iostream>
    
    using namespace std;
    
    // Singleton 基类,提供 GetInstance() 方法,获得T类的单实例指针
    template <class T>
    class Singleton{
    public:
        static T* GetInstance(){
            static T instance;  // 利用 static 从而获得单类型的实例
            return &instance;
        }
    
    protected:
        Singleton(){}
        virtual ~Singleton(){}
    };
    
    // 子类 MySingleton,只需继承自 Singleton<MySingleton>,
    // 即可通过 MySingleton::GetInstance() 获得单实例指针
    class MySingleton: public Singleton<MySingleton>{
    public:
        int GetSum(int a, int b){
            return a + b;
        }
    private:
        // 利用 friend 获得调用 Singleton 类的 GetInstance() 方法的权限
        friend class Singleton<MySingleton>;    
    };
    
    int main(int argc, char* argv[])
    {
        // 无需显式创建 MySingleton 的实例,即可通过 MySingleton::GetInstance() 获得单实例指针
        std::cout << "1+2=" << MySingleton::GetInstance()->GetSum(1,2) << std::endl;
        getchar();
        return 0;
    }

    VC2010编译通过,运行结果为:1+2=3

  • 相关阅读:
    质数学习笔记
    一本通 1615:【例 1】序列的第 k 个数
    2019.05.09考试解题报告
    洛谷 P1057 传球游戏
    浅谈逆序对
    Set学习笔记
    洛谷 P1115 最大子段和
    洛谷 P1234 小A的口头禅
    About Her
    洛谷 P1164 小A点菜
  • 原文地址:https://www.cnblogs.com/journeyonmyway/p/2566140.html
Copyright © 2011-2022 走看看