软件设计 石家庄铁道大学信息学院
实验7:单例模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解单例模式的动机,掌握该模式的结构;
2、能够利用单列模式解决实际问题。
[实验任务一]:学号的单一
仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。
实验要求:
1.画出对应的类图;
2.提交源代码;
3.注意编程规范。
1:类图:
2:源代码:
#include<iostream>
#include<string>
using namespace std;
class StudentNo
{
private:
static StudentNo *student;
string no;
StudentNo() {};
void setStudentNo(string no1)
{
no = no1;
}
public:
static StudentNo * getStudent() {
if (student == NULL) {
cout << "第一次分配学号, 分配新学号!" << endl;
student = new StudentNo();
student->setStudentNo("20194023");
}
else {
cout << "学号已存在,获取旧学号!" << endl;
}
return student;
}
string getStudentNo() {
return no;
}
};
StudentNo * StudentNo::student = NULL; //初始化 student
int main() {
StudentNo * no1, *no2;
no1 = StudentNo::getStudent();
no2 = StudentNo::getStudent();
cout << "学号是否一致:" << (no1 == no2) << endl;
string str1, str2;
str1 = no1->getStudentNo();
str2 = no2->getStudentNo();
cout << "第一次学号" << str1 << endl;
cout << "第二次学号" << str2 << endl;
cout << "内容是否相等" << (!str1.compare(str2)) << endl; //str1 == str2 时值为0
cout << "是否相同对象" << (str1 == str2) << endl;
}
3:输出:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!