欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > c++基础:37.单例模式

c++基础:37.单例模式

2025/11/17 7:47:31 来源:https://blog.csdn.net/m0_49024067/article/details/141176058  浏览:    关键词:c++基础:37.单例模式
#include <iostream>
class Demo
{public:Demo(const Demo&)=delete;static Demo& Get(){static Demo demo;return demo;}private:Demo(){}
};

写一个生成随机数的单例类

//Random.h
#pragma once
#include <random>
class Random
{
public:Random(const Random&) = delete;static Random& GetInstance();int GetNumber(int min, int max);
private:Random(){}
};
//Random.cpp
#include "Random.h"
Random& Random::GetInstance()
{static Random random;return random;
}
int Random::GetNumber(int min, int max)
{std::random_device rd;std::mt19937 gen(rd());//随机数范围std::uniform_int_distribution<>dis(min, max);return dis(gen);
}
//demo.cpp
#include <iostream>
#include "Random.h"
int main()
{for (int i = 0; i < 10; i++){int num = Random::GetInstance().GetNumber(1, 100);std::cout << num << std::endl;}std::cin.get();
}

这是常规方式,每次使用都需要调用GetInstance()函数。这里可以使用另一种方法。

//Random.h
#pragma once
#include <random>
class Random
{
public:Random(const Random&) = delete;static Random& GetInstance();//获取随机数static int Number(int min, int max);private:int GetNumber(int min, int max);Random(){}
};
//Random.cpp
#include "Random.h"Random& Random::GetInstance()
{static Random random;return random;
}
int Random::GetNumber(int min, int max)
{std::random_device rd;std::mt19937 gen(rd());//随机数范围std::uniform_int_distribution<>dis(min, max);return dis(gen);
}int Random::Number(int min, int max)
{return GetInstance().GetNumber(min, max);
}
#include <iostream>
#include "Random.h"
int main()
{for (int i = 0; i < 10; i++){std::cout << Random::Number(1,100) << std::endl;}std::cin.get();
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词