国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 桦南县| 曲周县| 二连浩特市| 广州市| 武威市| 海丰县| 沽源县| 济阳县| 岳池县| 天等县| 隆安县| 峡江县| 靖州| 万盛区| 东丰县| 正蓝旗| 商城县| 石景山区| 修文县| 大连市| 浏阳市| 马龙县| 岐山县| 阿尔山市| 叶城县| 波密县| 华亭县| 蕲春县| 介休市| 通渭县| 武穴市| 高淳县| 始兴县| 新河县| 雅安市| 琼海市| 胶州市| 汾西县| 浦城县| 万荣县| 吉木萨尔县|