指定されたリソースへの所有権(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->メンバ関数名();