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

cpp 复制代码
#include <iostream>
class Demo
{
	public:
	Demo(const Demo&)=delete;
	static Demo& Get()
	{
		static Demo demo;
		return demo;
	}
	private:
	Demo(){}
};

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

cpp 复制代码
//Random.h
#pragma once
#include <random>
class Random
{
public:
	Random(const Random&) = delete;
	static Random& GetInstance();
	int GetNumber(int min, int max);
private:
	Random(){}
};
cpp 复制代码
//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);
}
cpp 复制代码
//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()函数。这里可以使用另一种方法。

c 复制代码
//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(){}
};
cpp 复制代码
//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);
}
cpp 复制代码
#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();
}
相关推荐
hetao173383744 分钟前
2026-04-12~14 hetao1733837 的刷题记录
c++·算法
智者知已应修善业2 小时前
【51单片机4位数循环小数位移数值位移】2023-6-9
c++·经验分享·笔记·算法·51单片机
王璐WL2 小时前
【C++】string,vector和list对比
c++·list
不爱吃炸鸡柳2 小时前
算法复杂度从入门到精通:时间与空间复杂度全解析
开发语言·c++·算法
拳里剑气2 小时前
C++算法:二分查找
c++·算法·二分查找·学习方法
故事和你913 小时前
洛谷-算法1-7-搜索2
数据结构·c++·算法·leetcode·深度优先·动态规划·图论
不爱吃炸鸡柳3 小时前
C++ 进阶:unordered_map 与 unordered_set 超全详解(哈希容器实战)
开发语言·c++·哈希算法
wengqidaifeng3 小时前
第十七届蓝桥杯C/C++软件赛B组算法题讲解
c语言·c++·蓝桥杯
道剑剑非道3 小时前
【C++ 仿 MFC 反射系统】
开发语言·c++·mfc
晓纪同学4 小时前
EffctiveC++_第三章_资源管理
开发语言·c++·算法