C++でスマートポインタを実装する方法は何ですか?

C++では、std::shared_ptrとstd::unique_ptrを使用してスマートポインタを実現することができます。これらのスマートポインタクラスはどちらもヘッダーファイルで定義されています。

  1. std::shared_ptrを使うと、std::shared_ptrは、オブジェクトを複数の場所で共有できる参照カウントスマートポインタです。最後のstd::shared_ptrがスコープを超えると、オブジェクトは自動的に破棄されます。
  2. サンプルコード:
  3. #includeint main() {
    std::shared_ptr ptr(new int(5));
    *ptr = 10;
    std::cout << *ptr << std::endl;
    return 0;
    }
  4. std::unique_ptrを使用すると、そのオブジェクトへのポインタは1つだけ保有することができ、std::unique_ptrがスコープを外れると、オブジェクトは自動的に破棄されます。
  5. サンプルコード:
  6. #includeint main() {
    std::unique_ptr ptr(new int(5));
    *ptr = 10;
    std::cout << *ptr << std::endl;
    return 0;
    }

これらのスマートポインタクラスは自動的にメモリ管理を行い、リソースを手動で解放する必要がないため、メモリリークなどの問題を効果的に回避することができます。

bannerAds