gxx_base(一) GxxObject

gxx_base(一) GxxObject

GxxObject是gxx_base工具集中所有工具类的基类,使得工具类都可以使用智能指针来自动释放内存。

class G2X_CLASSES GxxObject
{
protected:
	GxxObject();

public:
	virtual ~GxxObject();

	virtual void print() {};
	
	void retain();
	void release();

protected:
	virtual bool init() { return true; }
	virtual void objectReleased() {}
	
public:
	virtual std::string describe(bool isUtf8=false) { return std::string(""); }
	void _print(const char* x);
	void _println(const char* x);

private:
	int retainCount;
};


GxxObject的构造函数为protected, 让使用者无法直接创建对象。所有工具类都必须使用 GXX_CREATE_FUNC 来声明类的构造函数和创建函数。创建对应工具类的对象需要使用 类名::create() 来创建,例如:创建一个字典对象, GxxDictionaryPtr dirPtr = GxxDictionary::create();

GxxObject::retain 增加引用计数

GxxObject::release 减少引用计数 当引用计数降为0时,对象自动被释放。

GxxObject::init 引用计数第一次等于1时(对象被创建时)自动调用, GXX_CREATE_FUNC  已经声明了构造函数, 为了能初始化成员变量, 可以重载init方法。

GxxObject::objectReleased 引用计数等于0时 (对象呗释放时)自动调用, GXX_CREATE_FUNC 已经声明了析构函数, 为了能做一些释放操作, 可以重载objectReleased方法。

GxxObject::describe 返回当前对象的一个字符串描述

GxxObject::_print 打印一条调试信息

GxxOjbect::_println 打印一条调试信息自动加上换行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值