問題タブ [default-copy-constructor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 浅いコピーはポインタを共有しますか? (C++)
私がこのようなことをすれば、私はそれを知っています:
次にObj1
とは同じ を指しObj2
ますが、同じポインタを共有しますか? すなわち:nine
8
は をObj2
指しnine
ますかNecronine
, または を 指し 続け8
ます ?
c++ - 他のオブジェクトを含むクラスの C++ 暗黙的コピー コンストラクター
自分で実装しない場合、コンパイラがデフォルトのコピーコンストラクタを提供することがあることを私は知っています。このコンストラクターが正確に何をするのか混乱しています。宣言されたコピー コンストラクターを持たない他のオブジェクトを含むクラスがある場合、どのような動作になりますか? たとえば、次のようなクラスです。
今私がこれを行うと:
デフォルトのコピーコンストラクターは何をしますか? のコンパイラ生成のコピー コンストラクターはFoo
、 のコンパイラ生成のコンストラクターを呼び出してBar
をコピーbar
しBaz
ますか?
c++ - コピーコンストラクターのオプトアウト
これはばかげた質問かもしれませんが...
私はコピーできないメンバーを利用する多くのクラスを書いてきました。これらのクラスは、私のソースのコピーコンストラクターを介して初期化されることはありません。独自のコピーコンストラクターを提供せずにコンパイルしようとすると、g ++は、コピーできないメンバーオブジェクトが原因で、デフォルトのコピーコンストラクターをビルドできない方法について多くのエラーをスローします。
コピーコンストラクターを提供しないようにコンパイラーに指示する方法はありますか?
編集: ええ...ばかげている...私はboost::bind呼び出しで誤ってコピーコンストラクターを呼び出していたケースがありました。学んだ教訓。
java - Javaオブジェクトコピーの最良のオプション?
重複の可能性:
Java でオブジェクトをコピーするにはどうすればよいですか?
Java でオブジェクトをコピーする必要があります (つまり、オブジェクトを「参照ではなく値で」コピーして、新しいオブジェクトが古いオブジェクトへの単なる参照にならないようにします)。私はクローン可能の実装にうんざりしていて、コピー コンストラクターを使用したいと考えています。ただし、コピーする必要があるクラスには、コピーする必要がある多くのメンバー変数 (100 以上) があるため、コピーするためだけに新しいコンストラクターをクラスに追加する (これはアプリケーションの 1 つの部分でのみ必要です) のは不十分な解決策のようです。その巨大な長さのために。
より良い解決策はありますか?clone() を使用する必要がありますか? コピー コンストラクターを作成できますが、すべてのフィールドを 1 つずつコピーするのではなく、リフレクティブにコピーできますか? ありがとう。
基本的には、古いオブジェクトと同じ新しいオブジェクトを作成する必要がありますが、いくつか (100 のうち約 10) のフィールドが変更されています (ただし、まだ両方のオブジェクトが必要です..そのため、新しいオブジェクトは古いもの)。私はどんな提案にもオープンです。
c++ - 仮想継承と仲間の MSVC9.0 バグまたは誤解?
次のコードを検討してください。
MSVC9.0 (Visual Studio 2008 の C++ コンパイラ) は既定のコンストラクターを生成しますが、C は A の仲間ですが、C のコピーおよび代入演算子を生成できません。これは予想される動作ですか、それとも Microsoft のバグですか? 後者の場合だと思います。私が正しければ、この問題が議論されている記事/フォーラム/...、またはマイクロソフトがこのバグに対応している場所を誰かが指摘できます。前もって感謝します。
PS ちなみに、両方のプライベート継承が保護に変更された場合、すべてが機能します
PPS 上記のコードが合法か違法かの証明が必要です。私が理解しているように、仮想プライベートベースを持つクラスは派生できないことが実際に意図されていました。しかし、彼らは友達の部分を見逃しているようです. だから...これが私の最初の報奨金です:)
c++ - C ++で暗黙的に定義されたコピーコンストラクターは、メンバーのコピーコンストラクターを正しく呼び出しませんか?
C ++クラスのデフォルト(コンパイラーによって暗黙的に定義された)コピーコンストラクターが各メンバー変数に対してコピーコンストラクターを実行し、古い値を使用して各メンバーのコピーされた値を取得し、アトミックオブジェクトに対してビットコピーを使用することを再確認したいだけです(例:intとfloat)
c++ - 参照を初期化するときに値によるコピーを避ける
私は関数インターフェースを持っています:
アイデアは次のように取得することです:
しかし、私は時々間違いをして次のように書きます。
これは値でコピーしますが、これは避けたいものです。しかし、私がそのような間違いをしたとき、コンパイラはその正当な構文のために警告を出しません。これに対してコンパイル時エラーをトリガーしたいのですが、私の代替案は何ですか?
コピーコンストラクターを宣言することを考えましたが、どこにも定義しないと、使用するとリンク時エラーが発生しますが、どのような状況でもコピーコンストラクターを使用できなくなります。これは望ましいことではありません。
c++ - 参照が存在する場合の代入演算子とコピー コンストラクター
私はちょうどこのコードを使用して参照を試しています:
どちらもB b1 = b;
エラーになると思っていました。代わりに、VS2008 でコンパイルすると、警告が表示されます
警告 C4512: 'B': 代入演算子を生成できませんでした
この警告が表示される理由を理解しています。B b1 = b;
しかし、コンパイラもステートメントに対してエラーを生成するべきではありませんか? コピーコンストラクターを生成したが、代入演算子を生成しなかったようなものです。この 2 つは本質的に互いにリンクしていませんか? もう一方が生成できなかったときに、そのうちの 1 つだけのデフォルト実装を生成することは理にかなっていますか?
c# - C#インスタンスのコピー/オブジェクト参照の受け渡しはJavaとは異なりますか?
...
言う..あなたがする
他の人の場所を変更しようとすると、バグ/問題が発生します。両方のプレイヤーが同じ場所を共有するようになったため、両方のプレイヤーの場所がまったく同じように変更されます。
したがって、もちろん、以下は問題なく機能します。
しかし問題は、常に新しいオブジェクトを作成することです..既存のインスタンスを更新するだけでよいのに..? これを修正するために以下で行ったように、独自のメソッドを作成せずに、デフォルトで既存のインスタンスを更新するにはどうすればよいですか。
以下の方法を使用してこれを修正する必要がありました(以下のようにせずにデフォルトでこれを行う方法)
私が知らないかもしれないトリックを知っている人はいますか?ありがとう。
c++ - コピー不可のメンバー参照を含むクラスのコピー コンストラクターに関するアドバイス
クラス B のオブジェクトをメンバーとして参照するクラス A があります。クラス B のコピー コンストラクター (および代入演算子) はプライベートです。A にデフォルトのコピー コンストラクターを使用することは有効で良い考えだと思いますか (実際には、代入機能と割り当て機能の両方を必要とするある種の STL コンテナーに、型 A の多くのオブジェクトを格納できる機能が必要です)。コピー可能。)
これまでのところ、私の知る限り、上記の方法に対する異議は次のとおりですが、私の設計はそれに直面していません。上記の例について他に問題/問題/懸念があるかどうかを知りたいです...
- 参照のみがコピーされるため、タイプ B の元のオブジェクト b が破棄されると問題が発生します。( b はスコープ全体で使用できるため、適用されません。)
- b_ は A のすべてのインスタンスで一意ですか? (いいえ、B は実際にはスコープ内で 1 回だけインスタンス化されるため、シングルトン クラスの効果があります。)
他に懸念事項がある場合は、ここに記載してください。私は明示的に定義されたコピーコンストラクターには熱心ではありませんが、それに対して心を開いています。