国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

工具類庫系列(十)-Object

2019-11-08 03:18:06
字體:
供稿:網(wǎng)友

第十個工具類:Object

Object是作為很多類的基類來使用的

用來實現(xiàn)提供給的每個類對象一個唯一的內(nèi)存guid的功能,方便做map

Object封裝一個無符號長整型的m_id,

定義一個全局的object_guid,從1開始自增,在Object的構(gòu)造函數(shù)中自增,保留0用來表示對象不存在

在多線程環(huán)境下,為了保證object_guid自增的線程安全,用到了原子操作atomic,linux下面就是__sync_fetch_and_add

上代碼:

Object.h

#ifndef __Object_h__#define __Object_h__#include "ToolDefine.h"namespace common{	namespace tool{		class Object		{		public:			Object();			Object(const Object& other);			virtual ~Object();			Object& Operator=(const Object& other);			inline objectid64 id() const			{				return m_id;			}		PRivate:			objectid64 m_id;		};	}}#endifObject.cpp

#include "Object.h"#ifdef WIN32#include <atomic>#else#endifnamespace common{	namespace tool{#ifdef WIN32		std::atomic<objectid64> g_object_guid = 1;#else		objectid64 g_object_guid = 1;#endif		Object::Object()		{#ifdef WIN32			m_id = g_object_guid++;#else			m_id = __sync_fetch_and_add(&g_object_guid, 1);#endif		}		Object::Object(const Object& other)		{#ifdef WIN32			m_id = g_object_guid++;#else			m_id = __sync_fetch_and_add(&g_object_guid, 1);#endif		}		Object::~Object()		{		}		Object& Object::operator=(const Object& other)		{			return *this;		}	}}其中ToolDefine.h中定義了

// obj idtypedef unsigned long long objectid64;// Object 對象的無效id,可以表示對象不存在const objectid64 NULL_ID = 0;
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 永年县| 类乌齐县| 肥东县| 安化县| 泌阳县| 茶陵县| 汉源县| 余庆县| 湘潭市| 黎平县| 新绛县| 宁陵县| 章丘市| 呈贡县| 马山县| 合川市| 黑山县| 法库县| 黄大仙区| 云南省| 高碑店市| 永德县| 赣榆县| 兖州市| 成武县| 库尔勒市| 石楼县| 汕尾市| 谢通门县| 韩城市| 沙雅县| 苗栗县| 同仁县| 航空| 大化| 会宁县| 勃利县| 大新县| 尚义县| 晋中市| 鱼台县|