問題タブ [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.

0 投票する
3 に答える
220 参照

c++ - コンテナクラスに値でコピーする方法は?

私は疎行列クラスを書いています。コンテンツのテンプレートとなるノード クラスが必要です。このクラスを書く際の問題は次のとおりです。

中身の保管方法は?

内容を値で保存したい。ポインターで保存して破棄する必要がある場合は、問題が発生します。setContents メソッドでコピーを安全に実行するにはどうすればよいですか? C++ は、ノード コンテナーに配置する必要があるクラスがそれ自体を複製できるという保証を提供しますか?

コピーコンストラクターを調べましたが、いくつか問題があります。含まれているクラスがコピー コンストラクターを実装していない場合はどうなるでしょうか。その場合、元のオブジェクトを削除するかスコープ外にする必要がある場合に参照がぶら下がっている可能性があるため、参照によってノードに渡すことは賢明ではありません。

これを行うための「標準C++」の方法は何ですか?

0 投票する
3 に答える
294 参照

c++ - わずかに異なるセマンティクスを持つコピーコンストラクタと代入演算子の落とし穴はありますか?

次のコードを見て、将来問題が発生するかどうか、発生する場合は回避する方法を教えてください。

つまり、コピーコンストラクターで、(データベース)IDフィールドを含むオブジェクトの正確なコピーを作成する必要があります。一方、割り当てるときは、データフィールドをコピーするだけです。しかし、通常、copyctorとoperator=のセマンティクスは同じであるため、いくつかの懸念があります。

idフィールドは、Noteとその友人によってのみ使用されます。他のすべてのクライアントの場合、代入演算子は正確なコピーを作成します。ユースケース:メモを編集する場合は、copy ctorを使用してコピーを作成し、編集してから、メモを管理するNotebookクラスでsaveを呼び出します。

一方、既存のメモと同じ内容で完全に新しいメモを作成したい場合は、次のように実行できます。

このアプローチはもっともらしいですか?そうでない場合は、考えられる悪影響を指摘してください。どうもありがとう!

0 投票する
6 に答える
36575 参照

c++ - コピー コンストラクターを明示的に呼び出すことはできますか?

コピーコンストラクターの仕組みについて少し混乱しています。私が間違っている場合は修正してください:

メソッドがオブジェクトへの参照をパラメーターとして取り、クラスがコピー コンストラクターを定義する場合、クラスはコンストラクターを使用して自身のコピーを作成し、元のオブジェクトへの参照ではなく関数に渡されますか?

さらに、呼び出すことができます

anotherObject のコピーを作成するには?

0 投票する
1 に答える
440 参照

oop - C++-CLI でオブジェクトを匿名で複製するにはどうすればよいですか?

に含まれるデータのストリームがありますSystem::Collections::Queue。私のデータ ソースは同じデータを複数のストリームに出力できますが、そのためにはそれぞれのデータを複製する必要があります。現在、次のことを行っています。

オブジェクトを送信している限り、これは正常に機能しMyDataます。MyOtherDataオブジェクトも送信したいとしましょう。次のようなより一般的なことを行うとよいでしょう。

...しかし、それは次の理由でコンパイルされません:

では、型を知らなくてもオブジェクトを複製することは可能でしょうか? ..もしそうなら、どうすればいいですか?:)

0 投票する
6 に答える
1936 参照

c++ - オーバーロードされた演算子がC++で呼び出されることはありません

私は実践的な演習として数学ライブラリを書いています。=演算子をオーバーロードすると、いくつかの問題が発生しました。デバッグしたところ、vertex1=vertex2を呼び出すと代わりにコピーコンストラクターが呼び出されることに気付きました。

ヘッダーファイルには次のものがあります。

私が実装したソースファイルでは、次のようになります。

後で、外積法があり、次のように使用したいと思います。

エラーメッセージは次のとおりです。エラー: `vector3 :: vector3(vector3)'を呼び出すための一致する関数がありませんが、コピーコンストラクターを呼び出したくありません。

0 投票する
5 に答える
566 参照

java - コピー コンストラクター クラスのインスタンス化

これがコピーコンストラクターを実装する私のクラスです

メインメソッドで上記のクラスのインスタンスを作成しようとしました

パラメータとして何を渡すべきかわかりません。TestCopyConst のインスタンスを渡す必要がある場合は、再び「new」を選択する必要があります。これにより、パラメーターの入力が再度求められます

ここに何が欠けていますか?または、コピーコンストラクターの概念自体が何か違うのでしょうか?

0 投票する
3 に答える
1486 参照

c++ - C ++コピーコンストラクター、一時およびコピーセマンティクス

このプログラムの場合

私が得る出力は次のとおりです。

f()は値で返されるため、一時的なものを返す必要があります。のようT a = x;に、一時的に渡されたものを引数として、T a(x);の構築のためにコピーコンストラクターを呼び出しませんか?a

0 投票する
2 に答える
4082 参照

c++ - LinkedList コピー コンストラクターの実装の詳細

私は C++ を学び始めており、演習として単純なLinkedListクラスを実装することにしました (以下にコードの一部があります)。コピー コンストラクターを実装する方法と、オリジナルのデータにアクセスする最善の方法について質問がLinkedListあります。

コピー コンストラクターは、オリジナルの各ノードのデータにLinkedList直接アクセスする必要がありますか?

または、対応するアクセサーを介してデータにアクセスする必要がありますか? (アクセサが定義されていないことはわかっています)。

また、カスタム イテレータを作成して、 を反復処理できるようにするつもりLinkedListです。各ノードのデータにアクセスするには、コピー コンストラクターで使用する必要がありますか?

別の質問 (完全にトピックから外れていることは承知しています)、いつ、および/またはなぜ、へのポインターを宣言する必要があるかLinkedList

それ以外の

0 投票する
3 に答える
9103 参照

c++ - コンパイラ生成のコンストラクタ

これは、次のようなコンストラクターでクラスを作成するとどうなるかを正しく理解するための簡単な質問です。

デフォルトのコンストラクターは既に定義されているため生成されないことはわかっていますが、コピーおよび代入コンストラクターはコンパイラによって生成されます。つまり、これを防ぐためにプライベート コピー コンストラクターとプライベート代入演算子を宣言する必要がありますか?

0 投票する
9 に答える
4850 参照

c++ - どのような状況で、C ++クラスに代入演算子、コピーコンストラクタ、およびデストラクタを提供する必要がありますか?

Say I've got a class where the sole data member is something like std::string or std::vector. Do I need to provide a Copy Constructor, Destructor and Assignment Operator?