azure011328

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

软件设计                  石家庄铁道大学信息学院

 

实验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;

}

posted on   淮竹i  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2023-11-13 每日总结11.13
 
点击右上角即可分享
微信分享提示