单例模式(全局地提供了一个类的唯一对象,该类的对象只创建一次,避免了创建类对象的开销)
单例模式全局地提供了一个类的唯一对象,而且类的对象只需要创建一次,避免了创建类的对象开销
代码
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
《设计模式,可复用面向对象软件的基础》
欢迎大家评论交流,作者水平有限,如有错误,欢迎指出
单例模式(全局地提供了一个类的唯一对象,该类的对象只创建一次,避免了创建类对象的开销)相关推荐
- java判断接口对象是哪个子类_Java提供了一个关键字( ),可以判断一个对象是否为某个类(或接口)的实例或者子类实例。...
Java提供了一个关键字( ),可以判断一个对象是否为某个类(或接口)的实例或者子类实例. 更多相关问题 -Do you know a has just opened in our neighborh ...
- 创建一个Student 类 包含属性有 序号 姓名 年龄 生日 提供对应的setter/getter 创建对象,完成赋值(setter赋值和构造方法赋值) 在控制台输出学生对象的信息
public class Student {/*1 创建一个Student 类 包含属性有 序号 姓名 年龄 生日 提供对应的setter/getter创建对象,完成赋值(setter赋值和构造方法赋 ...
- 设计一个中国象棋游戏,ChessPiece为抽象类,提供代表一个棋子位置的属性和方法,和isMoveLegal();设计ChessPiece的具体实现类(如车,马,帅等)
设计一个中国象棋游戏,ChessPiece为抽象类,提供代表一个棋子位置的属性和方法,和isMoveLegal():设计ChessPiece的具体实现类(如车,马,帅等),这些类能够根据自身特点实现不 ...
- ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。
DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...
- sdl 游戏引擎c语言,kys-cpp: 《金庸群侠传》C++复刻版,这是一个以SDL2为基础实现的2D游戏引擎。同时相当于提供了一个使用该引擎制作DOS游戏《金庸群侠传》移植版的范例。...
kys-cpp 这是一个以SDL2为基础实现的2D游戏引擎. 基本按照当代游戏引擎的思路实现,但是没有使用回调,因为回调会增加初学者的使用难度. 同时相当于提供了一个使用该引擎制作DOS游戏<金 ...
- win2008 php mssql study,MSSQL_SQL Server 2008的管理能力,Microsoft SQL Server 提供了一个用 - phpStudy...
SQL Server 2008的管理能力 Microsoft SQL Server 提供了一个用于管理一个或多个SQL Server实例的基于政策的系统和用于性能监控.故障排除和调整的工具,使得管理员 ...
- python创建一个类初始化两个变量name、age_Python小白入门:第八讲||类
Python 是一种面向对象的编程语言.在面向对象编程中,你编写表示现实世界中的事务和情景的类,并基于这些类来创建对象. 编写类时,你定义的一大类对象都有的通用行为.基于类创建对象时,每个对象都自动具 ...
- Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发
Spring JDBC * Spring框架对JDBC的简单封装.提供了一个JDBCTemplate对象简化JDBC的开发 * 步骤: 1. 导入jar包 ...
- OC中给我们提供的一个技术:谓词(NSPredicate).note
OC中给我们提供的一个技术:谓词(NSPredicate) OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起 ...
最新文章
- 芒果正式版7.1sdk和siverligt Toolkit for 芒果
- 团队作业10——复审与事后分析(Beta版本)
- Android一个自定义的进度环:ProgressChart
- tcplayer currenttime设置不成功_为什么你的“会员体系”不成功?权益设置很重要...
- matlab ip 大端,MATLAB格式化输出控制
- 在MFC程序中显示 JPG/GIF图像
- 苹果HTC专利战正酣: 逃离Android?
- 【数据预测】基于matlab LSTM神经网络空调能耗数据预测【含Matlab源码 051期】
- Android开发汇总帖子
- css改变水平线的颜色
- java file 获取文件类型_Android中Java根据文件头获取文件类型
- el-form 清除表单验证结果
- 数理统计方差齐性检验Python实现
- 优秀网页翻译:DS3231与 PCF2129 RTC比较
- iOS 图标上的数字
- 回归分析过程实例(练习)
- Python 中 selenium 设置参数,不打开可视化页面,后台执行爬虫程序
- 软考信息系统项目管理师_历年真题_2021上半年错题集_前35道选择题---软考高级之信息系统项目管理师035
- 智能家居领域技术应用,微波雷达人体感应模块,雷达传感器方案
- java获取cpu数量