唯一实例。

多次相当于New对象、结果只返回相同一段空间位置。并且内部提供计数、以便于最后一次判断释放。


感悟就是,编程。要清楚自己写的是什么,包括内部实现过程机制原理。




OnlyObject.h
//
//


#if !defined(AFX_ONLYOBJECT_H__ED2AA7E1_7F55_41F2_8DEC_FF33EABDD3C5__INCLUDED_)
#define AFX_ONLYOBJECT_H__ED2AA7E1_7F55_41F2_8DEC_FF33EABDD3C5__INCLUDED_


#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


class COnlyObject  
{
//接口函数
public:
virtual ~COnlyObject();
static COnlyObject* InitObject(); // 私有化构造函数,类像外部提供静态接口,不需要成员调用(static)。| 应该返回指针类型而不是变量。
//接口变量




protected:
//保护函数
COnlyObject();


//保护变量


static COnlyObject* spOnlyObject;
static int snCount;
};


#endif // !defined(AFX_ONLYOBJECT_H__ED2AA7E1_7F55_41F2_8DEC_FF33EABDD3C5__INCLUDED_)


OnlyObject.cpp: implementation of the COnlyObject class.
//
//


#include "stdafx.h"
#include "OnlyObject.h"


//
// Construction/Destruction
//


int COnlyObject::snCount = 0;
COnlyObject *COnlyObject::spOnlyObject = NULL;


COnlyObject::COnlyObject()
{
}


COnlyObject::~COnlyObject()
{
if (NULL != spOnlyObject)
{
snCount--;
if (0 == snCount)
{
delete spOnlyObject;
spOnlyObject = NULL;
}
}
}


COnlyObject* COnlyObject::InitObject()
{
if (NULL == spOnlyObject)
{
spOnlyObject = new COnlyObject;
}
snCount++;


return spOnlyObject;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值