タグ付けされた質問 「copy-constructor」


5
コピーアンドスワップイディオムとは何ですか?
このイディオムとは何ですか?いつ使用する必要がありますか?どの問題を解決しますか?C ++ 11を使用するとイディオムは変わりますか? 多くの場所で言及されていますが、「それは何か」という単一の質問と回答はありませんでした。これは以前に言及された場所の部分的なリストです: 好きなC ++コーディングスタイルのイディオムは何ですか:コピースワップ C ++でのコンストラクターと=演算子のオーバーロードのコピー:一般的な関数は可能ですか? コピーエリクションとは何か、そしてそれがコピーアンドスワップイディオムをどのように最適化するか C ++:オブジェクトの配列を動的に割り当てる?

3
コピーコンストラクタを無効にする
私はクラスを持っています: class SymbolIndexer { protected: SymbolIndexer ( ) { } public: static inline SymbolIndexer & GetUniqueInstance ( ) { static SymbolIndexer uniqueinstance_ ; return uniqueinstance_ ; } }; 次のようなコードを無効にするにはどうすればよいですか? SymbolIndexer symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( ); 次のようなコードのみを許可します: SymbolIndexer & ref_symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( );

3
デフォルト/コピー/移動トラクターおよびコピー/移動割り当て演算子の自動生成の条件?
通常、コンパイラーがデフォルトのコンストラクター、コピーコンストラクター、および代入演算子を自動生成する条件で、メモリを更新します。 いくつかのルールがあったことを思い出しますが、覚えていません。また、信頼できるリソースをオンラインで見つけることもできません。誰か助けてもらえますか?

3
C ++でコンストラクターと=演算子のオーバーロードをコピーする:一般的な関数は可能ですか?
コピーコンストラクター以来 MyClass(const MyClass&); および=演算子のオーバーロード MyClass& operator = (const MyClass&); ほぼ同じコード、同じパラメーターを持ち、戻り値が異なるだけですが、両方が使用する共通の関数を持つことは可能ですか?


4
初期化されていないメンバーを持つ構造体をコピーする
一部のメンバーが初期化されていない構造体をコピーすることは有効ですか? 未定義の動作ではないかと思いますが、その場合、初期化されていないメンバーを構造体に残すと(それらのメンバーが直接使用されない場合でも)、非常に危険になります。だから、規格にそれを許すものがあるのか​​しら。 たとえば、これは有効ですか? struct Data { int a, b; }; int main() { Data data; data.a = 5; Data data2 = data; }

2
コレクションを安全にコピーするにはどうすればよいですか?
以前は、コレクションを安全にコピーすると次のようなことをするように言っていました。 public static void doThing(List<String> strs) { List<String> newStrs = new ArrayList<>(strs); または public static void doThing(NavigableSet<String> strs) { NavigableSet<String> newStrs = new TreeSet<>(strs); しかし、これらの「コピー」コンストラクター、同様の静的作成メソッドおよびストリームは本当に安全で、ルールはどこに指定されていますか?安全とは、Java言語によって提供される基本的なセマンティック整合性の保証と、悪意のある呼び出し元に対して適用されるコレクションSecurityManagerであり、妥当な手段でバックアップされ、欠陥がないことを前提としています。 私はこの方法を投げると幸せConcurrentModificationException、NullPointerException、IllegalArgumentException、ClassCastException、など、またはおそらくハング。 String不変の型引数の例として選択しました。この質問については、私は独自の落とし穴を持つ変更可能な型のコレクションのディープコピーには興味がありません。 (明確にするために、私はOpenJDKのソースコードを見て、とに対して何らかの回答をArrayListしましたTreeSet。)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.