C++相談室 part15
■ このスレッドは過去ログ倉庫に格納されています
0128デフォルトの名無しさん
NGNGnew したオブジェクトはほぼ全ての場所でスマートポインタを使うことが望ましい。
コードが例外を throw した時、プログラムは delete をすっ飛ばして呼び出し元に飛んでく可能性があるので、その場合も正しくオブジェクトを破棄するために使用する。
実際最も一般的なのは、単一のオブジェクトを複数の場所で参照している場合、どのタイミングで削除するべきかをカプセル化したい場合など。
またC/C++では、単体オブジェクトと配列でdeleteとdelete[]を使い分けなければいけないが、一度ポインタに格納してしまうと区別がつかなくなる。
スマートポインタでこの問題を解消できる。
他にもNULLポインタにアクセスしようとした時にアクセス違反ではなく独自の例外を throw したり、新しくオブジェクトを作成することで何事もなかったかのようにプログラムを続けたり。
delete できないようにしたり、あるいは delete されてもまた必要になったら自動的に new しなおしたり。
ログを取ったり。
など、いくらでも考えられると。
■ このスレッドは過去ログ倉庫に格納されています