软件设计 石家庄铁道大学信息学院
实验7:单例模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解单例模式的动机,掌握该模式的结构;
2、能够利用单列模式解决实际问题。
[实验任务一]:学号的单一
仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。
实验要求:
#include <iostream>
class StudentId {
private:
static StudentId* instance;
int id;
// 私有构造函数
StudentId() : id(0) {}
// 禁止拷贝构造函数和赋值操作符
StudentId(const
StudentId&) = delete;
StudentId&
operator=(const StudentId&) = delete;
public:
// 获取单例对象
static StudentId*
getInstance() {
if (instance == nullptr)
{
instance = new
StudentId();
}
return instance;
}
// 设置学号
void setId(int newId) {
if (id == 0) { // 确保学号只被设置一次
id = newId;
}
}
// 获取学号
int getId() const {
return id;
}
};
// 初始化静态成员变量
StudentId* StudentId::instance = nullptr;
int main() {
// 获取学号单例对象
StudentId* student1 =
StudentId::getInstance();
student1->setId(12345);
StudentId* student2 =
StudentId::getInstance();
std::cout << "学号: " <<
student2->getId() << std::endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2023-11-13 每日总结11.13