
項目 19:共有するリソースの管理には std::shared_ptr を用いる
|
123
shared_ptr については後続の項目 19 を参照)。
重要ポイント
•
std::unique_ptr は、独占所有するリソース管理用の、サイズが小さく、高速な、ムーブ専
用のスマートポインタである。
•
ディフォルトでは、リソースは delete により破棄されるが、カスタムデリータも指定可能
である。状態を持つデリータや、関数ポインタのデリータは std::unique_ptr オブジェク
トのサイズを増加させる。
•
std::unique_ptr の std::shared_ptr への変換は容易である。
項目 19:共有するリソースの管理には std::shared_ptr を用いる
ガーベジコレクション機能を備えた言語を使用するプログラマは、C++ プログラマがリソース解
放もれを防ぐ作業をするのを指差して笑い、「なんと原始的なことを!」と野次ります。「1960 年代
の Lisp から何も学んでいないのかい? リソースのライフタイムを管理するのは人間じゃなくてマ
シンだよ。」と。C++ プログラマは目を剥いて言い返します。「その学んだことって言うのは、リソー
スと言えばメモリしか存在しなくて、非決定的なタイミングでリソースを回収する環境でのことか
い? 俺達はデストラクタの汎用性と決定性を重視しているのさ。あばよ。」しかし、この我々の反論
には的外れな部分があります。ガーベジコレクションが有用なことは間違いありませんし ...