#author("2016-11-02T05:50:25+00:00","default:nitta","nitta")
[[C++/C++14]]

 Effective Modern C++
  - C++11/14 プログラムを進化させる42項目
 Scott Meyers
 O'reilly Japan
 ISBN978-4-87311-736-2

*[[C++/C++14/SmartPointer]] [#i29cd8c9]

C++11のスマートポインタ
- std::auto_ptr  C++98から残されたもので非推奨。
- std::unique_ptr std::auto_ptr でできることはすべて可能で、それ以上のものに効率的に対処できる。
- std::shared_ptr
- std::weak_ptr

**項目18: 独占するリソースの管理には std::unique_ptr を用いる [#j0e0a0e0]
unique_ptr のサイズは、デフォルトでは raw ポインタと陰地であり、多くの演算で raw ポインタと同じ命令を実行する。

std::unique_ptr は exclusive ownership (排他的所有権)セマンティクスを備えている。
std::unique_ptr は指しているデータ(null以外)を所有し、unique_ptr をmoveすると所有権もmove先に移るので
unique_ptr は move-only type でありコピーはできない。
unique_ptr を破棄すると対象のリソースも破棄する(通常は raw ポインタに対して delete を行う)。

 class Investment { ... };
 class Stock: public Investment { ... };
 class Bond: public Investment { ... };
 class RealEsatte: public Investment { ... };

 template<typename... Ts>
 std::unique_ptr<Investment>
 makeInvestment(Ts&&... params);

呼び出し側
 {
   ...
   auto pInvestment = makeInvestment( arguments );
   ...
 }

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS