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 |
指针数据成员变量。 |
备注
此类构成了多个智能堆指针类的基础。 派生类(CHeapPtr
和 CComHeapPtr
)添加自己的构造函数和运算符。 有关实现示例,请参阅这些类。
要求
标头: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::ReallocateBytes
调用此方法重新分配内存。
bool ReallocateBytes(size_t nBytes) throw();
参数
nBytes
要分配的新内存量(以字节为单位)。
返回值
如果成功分配内存,则返回 true;否则返回 false。