Array クラスを作る (デストラクタ編)
Array オブジェクトは消滅時に、自分が保持していた配列のメモリ領域を開放しなければなりません。
この解放操作をデストラクタによって実行されるようにします。
具体的には、メンバ m_lpa がポイントしている配列領域を delete [] 演算子で解放します。
ただし、解放処理はデストラクタ以外のメンバ関数でも行われるため、これを Destroy というメンバ関数として部品化しておきましょう。
//デストラクタ
template<typename T> Array<T>::~Array(){
Destroy();
}
//オブジェクトの削除
template<typename T> void Array<T>::Delete(){
Destroy();
m_nSize =0;
m_lpa =NULL;
return;
}
//オブジェクトの破棄 [for internal use]
template<typename T> void Array<T>::Destroy(){
delete [] m_lpa;
return;
} |
Delete 関数は、オブジェクトを未初期化 (デフォルトコンストラクタで構築された状態) に戻す関数です。
Delete の動作は、delete 演算子によるフリーストア上のオブジェクトの解放に対応しています。即ち…。
オブジェクトを生成・初期化 Array<char>* lpac =new Array<char>(5); //削除 delete lpac; //再生成・初期化 lpac =new Array<char>(16); |
//オブジェクトを静的に生成・初期化 Array<char> ac(5); //削除 a.Delete(); //再初期化 a.Alloc(15); |
担当: 成田

コメントを投稿