はじめに
std::shared_ptr
std::shared_ptr の型消去
の鍵この動作を理解するには、std::shared_ptr が型消去を実行する方法にあります。共有ポインタは、作成されると、その管理対象オブジェクトをどのように破棄するかを決定する削除関数を格納します。このデリーターは明示的に指定することも、デフォルトで delete を使用してオブジェクトを削除することもできます。
デストラクター情報の保持
shared_ptr が別のファイルからコピーまたは構築される場合、デリーター関数は次のようになります。保存されています。これは、std::shared_ptr
例の図
質問で提供されているコードは、この機能を示しています。次の行は動作を説明しています。
<code class="cpp">v.push_back(std::shared_ptr<test>(new test()));</code>
ここでは、クラス test のインスタンスへのshared_ptr が作成され、ベクトル v に追加されます。
<code class="cpp">v.push_back(static_cast<std::shared_ptr<void>>(v.back()));</code>
テストするshared_ptrは次のようになります。明示的に std::shared_ptr
標準への準拠
std::shared_ptr
結論
while std::shared_ptr
以上がstd::shared_ptr はクリーンアップ中に適切なデストラクター呼び出しをどのように保証しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。