CAutoVectorPtr クラス
このクラスは、ベクトルの new および delete 演算子を使用してスマート ポインター オブジェクトを表します。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。
構文
template<typename T>
class CAutoVectorPtr
パラメーター
T
ポインター型。
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CAutoVectorPtr::CAutoVectorPtr | コンストラクター。 |
CAutoVectorPtr::~CAutoVectorPtr | デストラクター。 |
パブリック メソッド
名前 | 説明 |
---|---|
CAutoVectorPtr::Allocate | このメソッドを呼び出して、CAutoVectorPtr がポイントするオブジェクトの配列に必要なメモリを割り当てます。 |
CAutoVectorPtr::Attach | 既存のポインターの所有権を取得するには、このメソッドを呼び出します。 |
CAutoVectorPtr::Detach | ポインターの所有権を解放するには、このメソッドを呼び出します。 |
CAutoVectorPtr::Free | CAutoVectorPtr によってポイントされるオブジェクトを削除するには、このメソッドを呼び出します。 |
パブリック演算子
名前 | 説明 |
---|---|
CAutoVectorPtr::operator T * | キャスト演算子。 |
CAutoVectorPtr::operator = | 代入演算子。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
CAutoVectorPtr::m_p | ポインター データ メンバー変数。 |
解説
このクラスは、スマート ポインターを作成および管理するためのメソッドを提供します。これは、リソースがスコープ外になった場合にリソースを自動的に解放して、メモリ リークから保護するのに役立ちます。 CAutoVectorPtr
は CAutoPtr
に似ています。唯一の違いは、CAutoVectorPtr
は、C++ の new
および delete
演算子ではなく、vector new[]
と vector delete[]
を使用してメモリを割り当てたり、解放したりする点です。 CAutoVectorPtr
のコレクション クラスが必要な場合は、CAutoVectorPtrElementTraitsに関するページを参照してください。
スマート ポインター クラスの使用例については、CAutoPtr に関するページを参照してください。
要件
ヘッダー: atlbase.h
CAutoVectorPtr::Allocate
このメソッドを呼び出して、CAutoVectorPtr
がポイントするオブジェクトの配列に必要なメモリを割り当てます。
bool Allocate(size_t nElements) throw();
パラメーター
nElements
配列内の 要素の数。
戻り値
メモリが正常に割り当てられている場合は true、失敗した場合は false が返されます。
解説
デバッグ ビルドでは、CAutoVectorPtr::m_p メンバー変数が、現在既存の値をポイントしている場合、つまり、NULL と等しくない場合、アサーション エラーが発生します。
CAutoVectorPtr::Attach
既存のポインターの所有権を取得するには、このメソッドを呼び出します。
void Attach(T* p) throw();
パラメーター
P
CAutoVectorPtr
オブジェクトは、このポインターの所有権を取得します。
解説
オブジェクトが CAutoVectorPtr
ポインターの所有権を取得すると、ポインターと割り当て済みのデータがスコープ外に出た場合に自動的に削除されます。 CAutoVectorPtr::Detach が呼び出された場合、プログラマーには、割り当て済みのリソースを解放する責任が再び与えらます。
デバッグ ビルドでは、CAutoVectorPtr::m_p メンバー変数が、現在既存の値をポイントしている場合、つまり、NULL と等しくない場合、アサーション エラーが発生します。
CAutoVectorPtr::CAutoVectorPtr
コンストラクター。
CAutoVectorPtr() throw();
explicit CAutoVectorPtr(T* p) throw();
CAutoVectorPtr(CAutoVectorPtr<T>& p) throw();
パラメーター
P
既存のポインター。
解説
オブジェクト CAutoVectorPtr
は、既存のポインターを使用して作成できます。その場合、これによりポインターの所有権が転送されます。
CAutoVectorPtr::~CAutoVectorPtr
デストラクター。
~CAutoVectorPtr() throw();
解説
割り当てられたすべてのリソースを解放します。 CAutoVectorPtr::Free を呼び出します。
CAutoVectorPtr::Detach
ポインターの所有権を解放するには、このメソッドを呼び出します。
T* Detach() throw();
戻り値
ポインターのコピーを返します。
解説
ポインターの所有権を解放し、CAutoVectorPtr::m_p メンバー変数を NULL に設定し、ポインターのコピーが返されます。 Detach
を呼び出した後、CAutoVectorPtr
オブジェクトが以前に保持していた可能性がある割り当て済みのリソースを解放するのはプログラマーの責任です。
CAutoVectorPtr::Free
CAutoVectorPtr
によってポイントされるオブジェクトを削除するには、このメソッドを呼び出します。
void Free() throw();
解説
CAutoVectorPtr
によってポイントされるオブジェクトが解放され、CAutoVectorPtr::m_p メンバー変数が NULL に設定されます。
CAutoVectorPtr::m_p
ポインター データ メンバー変数。
T* m_p;
解説
このメンバー変数により、ポインター情報が保持されます。
CAutoVectorPtr::operator =
代入演算子。
CAutoVectorPtr<T>& operator= (CAutoVectorPtr<T>& p) throw();
パラメーター
P
ポインター。
戻り値
CAutoVectorPtr< T > への参照が返されます。
解説
代入演算子により、現在のポインターから CAutoVectorPtr
オブジェクトがデタッチされ、その代わりに新しいポインター p がアタッチされます。
CAutoVectorPtr::operator T *
キャスト演算子。
operator T*() const throw();
解説
クラス テンプレートで定義されているオブジェクト データ型にポインターが返されます。