C での移動演算の生成
C 98 では、カスタム定義のないクラスに対してコピー コンストラクターと代入演算子が自動的に生成されました。ただし、C 11 での移動セマンティクスの導入により、移動操作の生成についてはさらに考慮する必要があります。
移動操作の自動生成
移動コンストラクターと移動代入演算子特定の条件が満たされた場合にのみ自動的に生成されます:
自動生成の例外
場合によっては、移動操作が発生することがあります。上記の条件を満たしていても自動生成されません。例:
追加情報
ACCU からの Howard Hinnant のプレゼンテーション2014 年のカンファレンスでは、移動操作を含む特別なメンバーの自動生成のルールをまとめた包括的な表が提供されています。スライドでは、非推奨の動作が赤い四角で示されていることを強調しています。
移動セマンティクスが正しく処理されるようにするには、C 98/03 の「3 のルール」に従うことをお勧めします。これは、デストラクターが宣言されている場合は両方のコピー メンバーを明示的に宣言するか、少なくとも 1 つのコピー メンバーを宣言することを意味します。
以上が移動コンストラクターと移動代入演算子はいつ C で自動的に生成されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。