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();
}
相关推荐
zh_xuan2 小时前
c++ 单例模式
开发语言·c++·单例模式
利刃大大4 小时前
【在线五子棋对战】二、websocket && 服务器搭建
服务器·c++·websocket·网络协议·项目
喜欢吃燃面4 小时前
C++刷题:日期模拟(1)
c++·学习·算法
SHERlocked935 小时前
CPP 从 0 到 1 完成一个支持 future/promise 的 Windows 异步串口通信库
c++·算法·promise
虚拟之6 小时前
36、stringstream
c++
我很好我还能学6 小时前
【面试篇 9】c++生成可执行文件的四个步骤、悬挂指针、define和const区别、c++定义和声明、将引用作为返回值的好处、类的四个缺省函数
开发语言·c++
南岩亦凛汀7 小时前
在Linux下使用wxWidgets进行跨平台GUI开发
c++·跨平台·gui·开源框架·工程实战教程
曦月逸霜7 小时前
第34次CCF-CSP认证真题解析(目标300分做法)
数据结构·c++·算法
galaxy_strive7 小时前
绘制饼图详细过程
开发语言·c++·qt
Unpredictable2229 小时前
【VINS-Mono算法深度解析:边缘化策略、初始化与关键技术】
c++·笔记·算法·ubuntu·计算机视觉