C++ unique_ptr の基本と実践的な使い方

unique_ptrは、動的に割り当てられたオブジェクトの所有権を管理するスマートポインタクラスです。通常の生ポインタとは異なり、unique_ptrは管理するオブジェクトを自動的に解放する責任を持ち、そのためメモリリークを防ぐことができます。

unique_ptrの使用方法は次のとおりです:

  1. unique_ptrオブジェクトを作成するには、std::make_unique関数を使用して、動的に確保されたオブジェクトを指すunique_ptrオブジェクトを作成できます。
std::unique_ptr<int> ptr = std::make_unique<int>(10);
  1. unique_ptrが指すオブジェクトにアクセスするには、矢印演算子や*演算子を使用できます。
std::cout << *ptr << std::endl;
  1. 所有権の移転:unique_ptrはコピーまたは代入操作を許可しませんが、std::move関数を使用して別のunique_ptrオブジェクトに所有権を移転することができます。
std::unique_ptr<int> ptr2 = std::move(ptr);
  1. unique_ptrは、管理しているオブジェクトを所有権から解放するために、自動的にオブジェクトを開放しますが、手動で解放することもできます。
ptr2.reset();
  1. ラムダ式を使用してカスタムデリータを定義することができます。オブジェクトを解放する際に特定の操作を実行するためにラムダ式を使用できます。
std::unique_ptr<int, std::function<void(int*)>> ptr3(new int(20), [](int* p){ std::cout << "Deleting: " << *p << std::endl; delete p; });
bannerAds