問題タブ [copy-assignment]
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++ - コピー代入演算子へのパラメーターを参照する必要があるのはなぜですか?
「opperator= は src obj の (もちろん、const best) ref のパラメーターを取る必要があります」、私はこれを多くの本で見ますが、代わりに非 ref を使用しようとしています。 ref?paramからのコピーを避けるためだけですか? 私のテストコードは、
c++ - C++ でコンストラクターにデフォルト引数を使用するさまざまな方法
MSVC に関する次の 3 つのコードの違いは何ですか?
コード 1: 次のように定義された Foo ctor:
次のように使用されるフッター:
コード 2: 次のように定義された Foo ctor:
次のように使用されるフッター:
コード 3: 次のように定義された Foo ctor:
次のように使用されるフッター:
編集: コードに修正を加えました。意図はアイデアを説明することでしたが、コードに焦点を合わせていなかったため、間違いを犯しました。申し訳ありません。
具体的な問題は、コード 2 と 3 の違いを理解することです。何らかの理由により、コード 2 の場合、Foo クラス ctor のコンシューマがクラッシュし、コード 3 の場合はクラッシュしません。私は消費者の特定のコードを持っていないので、自分でそれを理解することはできません.
c++ - なぜ1つだけではないのですか?コピー コンストラクターと代入演算子
どちらがどのような状況で呼び出されるかを理解しています...
私の質問は、なぜこれら2つの異なるものが存在するのですか? 2 つのうちの 1 つだけが両方の状況を処理できないのはなぜですか?
c++ - 自分自身を割り当てるときのコピー代入演算子
私は、推奨される C++ の本の 1 つを読んでいました。
オブジェクトがそれ自体に割り当てられている場合でも、割り当て演算子が正しく機能することが非常に重要です。これを行う良い方法は、左側のオペランドを破棄する前に右側のオペランドをコピーすることです。
本の例; クラスには 1 つのデータ メンバーがps
あり、ps is string *
しかし、私たちのインストラクターは提案しました
講師の対応に問題はないか
c++ - C/C++ で配列を代入できないのはなぜですか?
構造体を別の構造体に代入すると、すべての値が構造体から別の構造体にコピーされます。
しかし、なぜ配列はそのように割り当てられないのですか:
厳密に言えば、構造体は可変サイズの要素を持つ単なる配列なので、なぜそれが許可されないのでしょうか? とにかく、この種の割り当ては使用されません。確かに、アドレスだけが関係しているように見えるかもしれませんが、配列をそのように (「静的に」) 簡単にコピーできます。
c++ - 削除済みとして合成されたデフォルト コンストラクター
私は本でこれを読みました:
メンバーに削除された、またはアクセスできないコピー代入演算子がある場合、またはクラスに const または参照メンバーがある場合、合成されたコピー代入演算子は削除済みとして定義されます。
また、参照型を使用できないのはなぜですか?
c++ - 演算子のオーバーロード "+" & "=" 問題 -- 学校支援
ここでの初めてのポスターですが、今は数か月潜んでいます。現在、C++ に夢中になっており、学校で以前の Comp Sci コースから得た Java の知識も少しあります。演算子のオーバーロードに関する質問が既にあるため、これを見てがっかりする人がいる場合は申し訳ありませんが、ここで見つけたものからプログラムが外れてしまうことの正確な原因をまとめることができませんでした。
この質問は特に + & = 演算子に関係しています。私はクラスで、これらのオーバーロードの両方を含むいくつかのプログラムを既に実行しましたが、プログラムを適切に機能させるのに何の問題もなかったようです。ただし、これらの以前のプログラムや現在のプログラムとは、それぞれの演算子のオーバーロードがどのように機能するかについての私の理解を超えているいくつかの明確な違いがあるに違いありません。
エラー メッセージ自体は、明らかにオペランドの一致の問題であるため、問題を修正するのがほとんど簡単すぎるように見えますが、これらのエラーを修正するための正しい構文を見つけることができませんでした。それらは次のとおりです。
と
コードは次のとおりです。
GradeMain.cpp:
Grade.cpp:
Grade.h:
operator= の問題に関する私の混乱の一部は、学生 3 を学生 1 に割り当てたときは問題がなかったのに、単に学生 2 = "Bill Miller" を割り当てると、オペランドの問題が発生することです。これは本質的に学生2( "ビルミラー"、0)のオブジェクトを作成するだけだと思っていましたが、どこか間違っているに違いありません。これを修正するものは何でも、現在割り当てられている成績に基づいて新しい変数を割り当てるときに、学生1の成績を更新するというオペランドの問題も修正すると想像できます。関数が現時点でどのように構造化されているか、おそらく operator+ のオーバーロードが "Grade Grade:operator+(const学年 &)"、
私がいる状況から抜け出す方法をよりよく理解するためにあなたが私を指し示すことができる方向は、絶対に優れているでしょう。これはクラスの課題であるため、GradeMain はインストラクターによって提供されるため、提案は Grade.cpp と Grade.h にのみ関係する必要があります。
読んでくれてありがとう:)
c++ - c ++派生クラスでのコピー代入の定義
だから私は次の簡単なコードを持っています
そして、私の問題は、行 B=A にコメントしない限り、次のエラーが発生するため、演算子 = の定義にあります。
コピー割り当てで多くの回避策を試しましたが、何も機能しません。Base クラスで定義する必要があるのは、別の Derived クラス (built2) が必要であり、理想的には、派生クラス間で同等にすることさえできるからです。
編集:間違ったコードを貼り付けました
c++ - valuelike コピー代入演算子の実装
C++ Primer には、copy-control メンバーを使用してクラスを「値のように」動作させる例があります。つまり、オブジェクトをコピーする場合、コピーは独立しています。次のコードを提案します。
私の質問は、コピー代入演算子に関するものです。私が理解しているように、ヒープに新しい文字列を作成し、古い文字列を削除し、lhs が新しい文字列を指すようにします。それは本当に必要ですか?以下のコードは、ヒープ上の既存の文字列に割り当てるだけでは、まったく同じことをしませんか?