>>37
たとえば、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で、各要素にアクセスできなくなるからね。