Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Shared_ptrの作成と共有 | スマートポインタの導入
C++スマートポインタ

bookShared_ptrの作成と共有

メニューを表示するにはスワイプしてください

推奨される方法

共有ポインタを作成する推奨方法は、std::make_shared 関数を使用することです。この方法は、new を使うよりも効率的かつ表現力が高いのが一般的です。オブジェクトと制御ブロック(参照カウント)のメモリを一度に割り当てます。例えば:

make_shared.h

make_shared.h

copy
12
// Create a shared pointer to an integer std::shared_ptr<int> p_int = std::make_shared<int>(42);

上記の行は動的な整数を割り当て、さらに参照カウントが1の共有ポインタとして初期化します。

非推奨の方法

new を使用して shared pointer を作成することも可能ですが、この方法は表現力に欠け、効率的でもないため推奨されません。この方法の構文では、オブジェクトを shared pointer のコンストラクタに渡す必要があります。

creating_shared_pointer.h

creating_shared_pointer.h

copy
12
// Also creates a shared pointer to an integer std::shared_ptr<int> p_int(new int(42));

動的な整数を割り当て、その後 shared pointer のコンストラクタに渡します。ただし、コントロールブロック(参照カウント)はコンストラクタ内で初期化されます。

つまり、2回の初期化が行われるため非効率的であり、エラーが発生する可能性があります。

共有ポインタの受け渡し

共有ポインタは、安全な共有のために設計されたスマートポインタ。ここでは、共有ポインタを受け渡すいくつかの方法について説明。

question mark

4つの shared_ptr インスタンスが同じ動的オブジェクトを共有している場合、オブジェクトのデストラクタはいつ呼び出されるか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  8

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  8
some-alt