shared_ptrを初めて使ったのですが、使い方が今一つ分からなかったので、質問させていただきます。
まず書き方なのですが、
であっているのでしょうか?見慣れないせいなのか少し変な書き方のように見えてしまい、あっているのか不安です
また、調べていてもmake_sharedの方が多く書かれていて、shared_ptrの説明が少ないように感じました。
違いが分からないので、この2つの何が違うのかも教えていただけたら幸いです。
どうぞよろしくお願いいたします。
C++ shared_ptrの使い方
Re: C++ shared_ptrの使い方
どちらでも同じような感じですが、安心・安全のため make_shared を使うのが常套です。
[参考]
https://msdn.microsoft.com/ja-jp/library/ee410595.aspx
解説にバッチリ書いていますよ。
[参考]
https://msdn.microsoft.com/ja-jp/library/ee410595.aspx
解説にバッチリ書いていますよ。
素人的な質問は、素人に聞こう!
↑
危ない危ない。
ちゃんとした人に質問しましょう。
ちなみに私は、ちゃんとしていない素人です。
↑
危ない危ない。
ちゃんとした人に質問しましょう。
ちなみに私は、ちゃんとしていない素人です。
Re: C++ shared_ptrの使い方
間違ってはいませんが、通常は次のように書きます。
shared_ptrオブジェクトは、Hogeオブジェクトへのポインタと、Yak さんが書きました: また、調べていてもmake_sharedの方が多く書かれていて、shared_ptrの説明が少ないように感じました。
違いが分からないので、この2つの何が違うのかも教えていただけたら幸いです。
参照カウントオブジェクトへのポインタを持ちます。
shared_ptr のコンストラクタは、
参照カウントオブジェクトを new して、それを保持します。
引数で渡された Hogeオブジェトへのポインタも保持します。
デストラクタで、参照カウントオブジェクトの delete と
Hogeオブジェクトの delete を実行します。
make_shared で shared_ptrオブジェクトを生成すると、
一つの new で、Hogeオブジェクトと参照カウントオブジェクトの
領域を確保します。そして、shared_ptr のデストラクタでは、
一つの delete で領域を解放しますから、効率が良くなります。