CHeapPtrBase

此类构成了多个智能堆指针类的基础。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

template <class T, class Allocator = CCRTAllocator>
class CHeapPtrBase

参数

T
要存储在堆上的对象类型。

Allocator
要使用的内存分配类。 默认情况下,CRT 例程用于分配和释放内存。

成员

公共构造函数

名称 描述
CHeapPtrBase::~CHeapPtrBase 析构函数。

公共方法

名称 描述
CHeapPtrBase::AllocateBytes 调用此方法来分配内存。
CHeapPtrBase::Attach 调用此方法以获取现有指针的所有权。
CHeapPtrBase::Detach 调用此方法可释放指针的所有权。
CHeapPtrBase::Free 调用此方法以删除由 CHeapPtrBase 指向的对象。
CHeapPtrBase::ReallocateBytes 调用此方法重新分配内存。

公共运算符

“属性” 描述
CHeapPtrBase::operator T* 强制转换运算符。
CHeapPtrBase::operator & & 运算符。
CHeapPtrBase::operator -> 指向成员的指针的运算符。

公共数据成员

“属性” 描述
CHeapPtrBase::m_pData 指针数据成员变量。

备注

此类构成了多个智能堆指针类的基础。 派生类(CHeapPtrCComHeapPtr)添加自己的构造函数和运算符。 有关实现示例,请参阅这些类。

要求

标头:atlcom.h

CHeapPtrBase::AllocateBytes

调用此方法来分配内存。

bool AllocateBytes(size_t nBytes) throw();

参数

nBytes
要分配的内存字节数。

返回值

如果成功分配内存,则返回 true;否则返回 false。

注解

在调试版本中,如果 CHeapPtrBase::m_pData 成员变量当前指向现有值,则会发生断言失败;也就是说,它不等于 NULL。

CHeapPtrBase::Attach

调用此方法以获取现有指针的所有权。

void Attach(T* pData) throw();

参数

pData
CHeapPtrBase 对象将获取此指针的所有权。

备注

CHeapPtrBase 对象获取指针的所有权时,它将在超出范围时自动删除指针和任何已分配的数据。

在调试版本中,如果 CHeapPtrBase::m_pData 成员变量当前指向现有值,则会发生断言失败;也就是说,它不等于 NULL。

CHeapPtrBase::~CHeapPtrBase

析构函数。

~CHeapPtrBase() throw();

注解

释放所有已分配的资源。

CHeapPtrBase::Detach

调用此方法可释放指针的所有权。

T* Detach() throw();

返回值

返回对象的副本。

备注

释放指针的所有权,将 CHeapPtrBase::m_pData 成员变量设置为 NULL,并返回指针的副本。

CHeapPtrBase::Free

调用此方法以删除由 CHeapPtrBase 指向的对象。

void Free() throw();

注解

释放 CHeapPtrBase 指向的对象,CHeapPtrBase::m_pData 成员变量设置为 NULL。

CHeapPtrBase::m_pData

指针数据成员变量。

T* m_pData;

注解

此成员变量保存指针信息。

CHeapPtrBase::operator &

& 运算符。

T** operator&() throw();

返回值

返回 CHeapPtrBase 对象指向的对象的地址。

CHeapPtrBase::operator ->

指向成员的指针的运算符。

T* operator->() const throw();

返回值

返回 CHeapPtrBase::m_pData 成员变量的值。

备注

使用此运算符调用 CHeapPtrBase 对象指向的类中的方法。 在调试版本中,如果 CHeapPtrBase 指向 NULL,将发生断言失败。

CHeapPtrBase::operator T*

强制转换运算符。

operator T*() const throw();

备注

返回 CHeapPtrBase::m_pData

CHeapPtrBase::ReallocateBytes

调用此方法重新分配内存。

bool ReallocateBytes(size_t nBytes) throw();

参数

nBytes
要分配的新内存量(以字节为单位)。

返回值

如果成功分配内存,则返回 true;否则返回 false。

另请参阅

CHeapPtr
CComHeapPtr
类概述