C での移動操作の自動生成
C 98 では、コンパイラはクラスのコピー コンストラクターとコピー代入演算子を自動的に生成できました。ただし、C 11 での移動セマンティクスの導入により、移動操作の自動生成について疑問が生じます。
移動コンストラクターと移動代入演算子は自動的に生成されますか?
いいえ、コピー コンストラクターやコピー代入演算子とは異なり、コンパイラーはユーザー定義のコンストラクターや代入を含むクラスの移動操作を自動的に生成しません。演算子。
移動操作が自動的に生成されないケース
次の場合、移動操作は自動的に生成されません。
移動の自動生成の決定操作
クラスに対して移動操作が自動的に生成されるかどうかを判断するには、次の点を考慮してください。
自動の非推奨移動操作の生成
C 20 では、移動操作の自動生成は次のようになります。クラスがデストラクターまたはコピー メンバー (コピー コンストラクター、コピー代入演算子) を宣言している場合は非推奨になります。 C の将来のバージョンとの互換性を確保するには、移動操作を必要とするクラスの移動操作を明示的に宣言することをお勧めします。
以上がC コンパイラはいつ移動コンストラクターと代入演算子を自動的に生成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。