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

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
#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++入门篇十一 随笔

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄