指定されたリソースへの所有権(ownership)を共有(share)するスマートポインタ

宣言

基本的な使い方

std::shared_ptr<変数型またはクラス名> p1(new 変数型またはクラス名(引数));
std::shared_ptr<変数型またはクラス名> p1;
p1 = std::make_shared<変数型またはクラス名>(引数);

あらゆる型のポインタを格納

voidをテンプレート引数とするshared_ptrに対してどんな型のポインタを代入したとしても、代入した型のデストラクタは、正しく実行される

std::shared_ptr<void> p1(new 変数型またはクラス名());

使用方法

通常のポインタと同じ使い方

クラスのメンバ変数,メンバ関数にアクセスするときはアロー演算子

p1->メンバ変数名;
p1->メンバ関数名();

参考サイト

shared_ptr - cpprefjp C++日本語リファレンス