C++相談室 part48
■ このスレッドは過去ログ倉庫に格納されています
0040デフォルトの名無しさん
2006/03/18(土) 17:46:15たとえば、T型へのポインタの配列へのポインタT** ptrをメンバに持ち、要素をクリアするメソッドを定義すると
void clear() {
if (ptr) {
for (int i = 0; i < size(); ++i) delete ptr[i];
delete[] ptr;
ptr = 0;
}
}
このclear()は、もしptrに0を代入していなければ、二度呼び出された時点で不正になる。
要素が存在する場合に限ってclear()を呼び出せるような仕様にするより、
いかなる場合でもclear()は要素をクリアするような仕様の方が、見通しがいいと思う。
if (!my_container.empty()) my_container.clear(); // 要素が空かのチェックつき。こう書くより
my_container.clear(); // こう書けば、要素のあるなしに限らずクリアしてくれる方が、私は嬉しい
ただし、最初のdeleteループでは、各要素に0を代入したりはしない。
すぐ次のdeleteで、各要素にアクセスできなくなるからね。
■ このスレッドは過去ログ倉庫に格納されています