设为首页 加入收藏

TOP

3.10.2 操作函数
2013-10-07 13:14:31 来源: 作者: 【 】 浏览:68
Tags:3.10.2 操作 函数

3.10.2  操作函数

object_pool是pool的子类,但它使用的是保护继承,因此不能使用pool的接口,但基本操作还是很相似的。

object_pool的模板类型参数ElementType指定了object_pool要分配的元素类型,要求其析构函数不能抛出异常。一旦在模板中指定了类型,object_pool实例就不能再用于分配其他类型的对象。

malloc()和free()函数分别分配和释放一块类型为ElementType*的内存块,同样,可以用is_from()来测试内存块的归属,只有是本内存池分配的内存才能被free()释放。但它们被调用时并不调用类的构造函数和析构函数,也就是说操作的是一块原始内存块,里面的值是未定义的,因此我们应当尽量少使用malloc()和free()。

object_pool的特殊之处是construct()和destroy()函数,这两个函数是object_ pool的真正价值所在。construct()实际上是一组函数,有多个参数的重载形式(目前最多支持3个参数,但可以扩展),它先调用malloc()分配内存,然后再在内存块上使用传入的参数调用类的构造函数,返回的是一个已经初始化的对象指针。destory()则先调用对象的析构函数,然后再用free()释放内存块。

这些函数都不会抛出异常,如果内存分配失败,将返回0。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.10.4 使用更多的构造参数 下一篇3.10.1 类摘要

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: