Codelogy

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);
担当: 成田

コメントを投稿

コメントの公開は承認制のため、投稿から掲載までに時間がかかることがあります。


About

2007年07月18日 18:30 に投稿されたエントリです。

他にも多くのエントリがあります。
メインページアーカイブページもご覧ください。