单例模式全局地提供了一个类的唯一对象,而且类的对象只需要创建一次,避免了创建类的对象开销

代码

single.h

#ifndef HEADFILE
#define HEADFILE#include <iostream>using namespace std;class single
{
public:single() {}~single() {}static single *getinstance();static single *m_instance;
};single *single::m_instance=nullptr;//it's necessary#endif

single.cpp

#include "single.h"single *single::getinstance()
{if (!m_instance) {cout<<"m_instance is created"<<endl;m_instance=new single();}return m_instance;
}

main.cpp

#include "single.cpp"single a;int main(int argc, char const *argv[])
{a.getinstance();a.getinstance();return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)  project( single )  INCLUDE_DIRECTORIES(include)AUX_SOURCE_DIRECTORY(src DIR_SRCS)add_executable(single ./src/main.cpp)

运行结果

通过运行结果可知,log输出一次,只创建了一个single对象

参考:

https://www.bilibili.com/video/BV1kW411P7KS?p=12

《设计模式,可复用面向对象软件的基础》

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

单例模式(全局地提供了一个类的唯一对象,该类的对象只创建一次,避免了创建类对象的开销)相关推荐

  1. java判断接口对象是哪个子类_Java提供了一个关键字( ),可以判断一个对象是否为某个类(或接口)的实例或者子类实例。...

    Java提供了一个关键字( ),可以判断一个对象是否为某个类(或接口)的实例或者子类实例. 更多相关问题 -Do you know a has just opened in our neighborh ...

  2. 创建一个Student 类 包含属性有 序号 姓名 年龄 生日 提供对应的setter/getter 创建对象,完成赋值(setter赋值和构造方法赋值) 在控制台输出学生对象的信息

    public class Student {/*1 创建一个Student 类 包含属性有 序号 姓名 年龄 生日 提供对应的setter/getter创建对象,完成赋值(setter赋值和构造方法赋 ...

  3. 设计一个中国象棋游戏,ChessPiece为抽象类,提供代表一个棋子位置的属性和方法,和isMoveLegal();设计ChessPiece的具体实现类(如车,马,帅等)

    设计一个中国象棋游戏,ChessPiece为抽象类,提供代表一个棋子位置的属性和方法,和isMoveLegal():设计ChessPiece的具体实现类(如车,马,帅等),这些类能够根据自身特点实现不 ...

  4. ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。

    DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...

  5. sdl 游戏引擎c语言,kys-cpp: 《金庸群侠传》C++复刻版,这是一个以SDL2为基础实现的2D游戏引擎。同时相当于提供了一个使用该引擎制作DOS游戏《金庸群侠传》移植版的范例。...

    kys-cpp 这是一个以SDL2为基础实现的2D游戏引擎. 基本按照当代游戏引擎的思路实现,但是没有使用回调,因为回调会增加初学者的使用难度. 同时相当于提供了一个使用该引擎制作DOS游戏<金 ...

  6. win2008 php mssql study,MSSQL_SQL Server 2008的管理能力,Microsoft SQL Server 提供了一个用 - phpStudy...

    SQL Server 2008的管理能力 Microsoft SQL Server 提供了一个用于管理一个或多个SQL Server实例的基于政策的系统和用于性能监控.故障排除和调整的工具,使得管理员 ...

  7. python创建一个类初始化两个变量name、age_Python小白入门:第八讲||类

    Python 是一种面向对象的编程语言.在面向对象编程中,你编写表示现实世界中的事务和情景的类,并基于这些类来创建对象. 编写类时,你定义的一大类对象都有的通用行为.基于类创建对象时,每个对象都自动具 ...

  8. Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发

    Spring JDBC     * Spring框架对JDBC的简单封装.提供了一个JDBCTemplate对象简化JDBC的开发     * 步骤:         1. 导入jar包        ...

  9. OC中给我们提供的一个技术:谓词(NSPredicate).note

    OC中给我们提供的一个技术:谓词(NSPredicate) OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起 ...

最新文章

  1. 芒果正式版7.1sdk和siverligt Toolkit for 芒果
  2. 团队作业10——复审与事后分析(Beta版本)
  3. Android一个自定义的进度环:ProgressChart
  4. tcplayer currenttime设置不成功_为什么你的“会员体系”不成功?权益设置很重要...
  5. matlab ip 大端,MATLAB格式化输出控制
  6. 在MFC程序中显示 JPG/GIF图像
  7. 苹果HTC专利战正酣: 逃离Android?
  8. 【数据预测】基于matlab LSTM神经网络空调能耗数据预测【含Matlab源码 051期】
  9. Android开发汇总帖子
  10. css改变水平线的颜色
  11. java file 获取文件类型_Android中Java根据文件头获取文件类型
  12. el-form 清除表单验证结果
  13. 数理统计方差齐性检验Python实现
  14. 优秀网页翻译:DS3231与 PCF2129 RTC比较
  15. iOS 图标上的数字
  16. 回归分析过程实例(练习)
  17. Python 中 selenium 设置参数,不打开可视化页面,后台执行爬虫程序
  18. 软考信息系统项目管理师_历年真题_2021上半年错题集_前35道选择题---软考高级之信息系统项目管理师035
  19. 智能家居领域技术应用,微波雷达人体感应模块,雷达传感器方案
  20. java获取cpu数量

热门文章

  1. 如何挑选适合的前端框架(去哪儿网前端架构师司徒正美)
  2. linux系统做bond
  3. 无聊中安装的MAC OS截图欣赏
  4. Python 解决 :NameError: name 'reload' is not defined 问题
  5. lucene索引文件大小优化小结
  6. Unity热更新技术整理
  7. 传送门(portal)
  8. 展讯camera去除尺寸相关缓存
  9. 安卓天天练练(十一)用list绑数据
  10. TFS 2010 使用手册(二)项目集合与项目