单例对象:为了让类只有一个实例,实例不需要自己释放掉

不管创建多少个实例对象进行访问,访问的都是同一个值

#include "pch.h"
#include <iostream>
using namespace std; //创建主席类,单例对象 class Chairman {
public:
//提供get方法访问主席,private类内是可以访问的
static Chairman* getInstance() {
return singelman;//chairman这里是定义了是返回什么类型的数据
} private:
Chairman() {
cout << "创建新的实例" << endl;
} Chairman(Chairman &c) {
//拷贝构造函数私有话,下面就不能进行拷贝了
}
static Chairman *singelman;//创建一个静态成员变量,内部提供一个静态指针,只维护这个对象指针 }; //初始化,静态成员变量实现
Chairman * Chairman::singelman = new Chairman;//初始化这个sinplechair,前面是什么类型 void test01() {
cout << "开始" << endl;
Chairman * cm1 = Chairman::getInstance();//这里是创建了两个对象
Chairman * cm2 = Chairman::getInstance();
//解释:cm2是一个指针,*cm2是一个整体,一个实例对象
if (cm1 == cm2) {
cout << "一样" << endl;//结果是一样的,因为共享数据,同一个对象
}
else {
cout << "不一样" << endl;
} /*
Chairman *cm3 = new Chairman(*cm2);//通过拷贝构造在创建一个新的,cm2是一个指针对象,*cm2是一个整体
Chairman cm4(*cm2);//这个也是拷贝构造
//注意,拷贝构造出来的名字,但是属性不同,不是同一个人了,所以不能这样,单例对象,不能这样
*/ };
int main() {
test01();
}

如果要让某一个属性不可以更改的话,可以设置为私有的权限,private
可以提供一个公有权限,查看该属性的值string getval(){return xxx},提供查看的api接口,但是只能访问,不能修改

目的:为了让类中只有一个实例,实例不需要自己释放

将默认构造和拷贝构造私有化

内部维护一个对象指针

私有化唯一指针

对外提供getinstance方法访问这个指针,只能访问,不能修改

Priner单例对象例子:

#include "pch.h"
#include <iostream>
using namespace std;
#include<string> class Printer {
//写一个类,是一个打印机的类
public:
//拿到这个打印机
static Printer * getInstance() {
return singlepriner;//返回打印机,(),静态成员变量可以通过静态成员函数来拿
}
void Printning(string request) {
//不用返回值,直接void
cout << "打印成功:" << request << endl;
}
private:
static Printer * singlepriner;//写一个指针对象
Printer() {}
Printer(Printer &p) {}//写拷贝构造函数 };
//对静态成员变量进行初始化,对指针对象进行初始化,Printer * xxxx(指针对象)=new Printer;
Printer * Printer::singlepriner = new Printer;//进行初始化 void test01() {
//Printer作用域下面的getinstance方法()
Printer *priner = Printer::getInstance();//拿到打印机,用指针的形式取到打印机
priner->Printning("申请报告");
priner->Printning("加薪报告"); }
int main() {
test01();
}

C++入门篇十一的更多相关文章

  1. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  2. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  3. .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...

  4. net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第一章 入门篇-开篇及总体规划

    .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划   原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来 ...

  5. 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发

    每天记录一点:NetCore获得配置文件 appsettings.json   用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...

  6. Python入门篇-文件操作

    Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...

  7. Membership三步曲之入门篇 - Membership基础示例

    Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Pro ...

  8. 1. web前端开发分享-css,js入门篇

    关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...

  9. 一个App完成入门篇(七)- 完成发现页面

    第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...

随机推荐

  1. deeplearing4j学习以及踩过的坑

    1. 添加dl4j后, run项目时, 一直run不起来, run按钮绿色但是点击没反应.   查看日志后发现: 是classpath太长导致的. 在本项目的.idea文件夹,找到文件夹中的works ...

  2. centos7之zabbix监控mysql(mariadb)数据库

    一.Zabbix3.2.6使用自带模板监控MySQL 添加zabbix_agent客户端方法:http://www.cnblogs.com/lei0213/p/8858269.html mysql服务 ...

  3. git总结三、关于分支下——团队合作中最重要的合并分支

    合并分支是团队合作开发中常见的操作,这里涉及到两个命令:git merge 和 git rebase 下面来好好说一下git merge和git rebase都是怎样工作的 一. 1.新建一个空目录并 ...

  4. c提高第四次作业

    1. 简述指针数组和数组指针的区别?答: 指针数组:是一个数组,每个元素都是指针 数组指针:是一个指针,指向数组的指针 2. 如何定义一个指向 int a[10] 类型的指针变量(数组指针)(使用3种 ...

  5. Python基础:第一个Python程序(2)

    1.Python Shell 1.1 Windows命令 (1)[开始]|[运行],输入cmd回车,进入Windows命令界面. (2)输入python,回车,进入Python Shell. 1.2 ...

  6. Mongo集群Java连接时UnknownHostException错误

    今天在 Java 连接 Mongo 集群时报了一个超时的错误,但是在本地客户端连接单节点的时候却能连上,具体报的错误如下: Caused by: com.mongodb.MongoTimeoutExc ...

  7. layui table默认选中指定行

    表格默认选中行,在回调里写入 done: function (res, curr, count) { tableData = res.data; $("[data-field='id']&q ...

  8. bzoj 5338: [TJOI2018]xor (树链剖分+可持久化01Trie)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=5338 题面: 5338: [TJOI2018]xor Time Limit: 30 Sec  ...

  9. [BJOI2017]树的难题

    题目描述 给你一棵 n 个点的无根树. 树上的每条边具有颜色.一共有 m 种颜色,编号为 1 到 m.第 i 种颜色的权值为 ci. 对于一条树上的简单路径,路径上经过的所有边按顺序组成一个颜色序列, ...

  10. P1282 多米诺骨牌 (背包变形问题)

    题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...