单例模式c++

单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。


#ifndef _SINGLETON_H_
#define _SINGLETON_H_

#include<iostream>

using namespace std;

class Singleton {
 public:
   static Singleton* GetInstance();
   int getVar();
   void setVar(int var);

private:
   Singleton();
   virtual ~Singleton();
   static Singleton* instance;
   int var;
};

#endif

#include"singleton.h"

Singleton::Singleton() {
   this->var=20;
   cout<<"singleton constructor...var=20"<<endl;

}

Singleton::~Singleton() {
  delete instance;
}

Singleton* Singleton::instance=new Singleton();
Singleton* Singleton::GetInstance() {
  return instance;
}

int Singleton::getVar(){
  return this->var;
}

void Singleton::setVar(int var) {
  this->var = var;

}

#include"singleton.h"

int main(int argc , char **argv) {
  Singleton* ton1 = Singleton::GetInstance();
  Singleton* ton2 = Singleton::GetInstance();

  cout<<"ton1 var="<<ton1->getVar()<<endl;
  ton1->setVar(100);
  cout<<"ton2 var="<<ton2->getVar()<<"  "<<ton1->getVar()<<endl;
  
  ton2->setVar(825);
  cout<<"ton1 var="<<ton2->getVar()<<"  "<<ton1->getVar()<<endl;
  return 0;
}

singleton constructor...var=20
ton1 var=20
ton2 var=100  100
ton1 var=825  825
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值