問題タブ [assignment-operator]
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++ 標準について質問があります。
ユーザー定義のコピー コンストラクターと代入演算子を持つ基本クラスがあるとします。派生クラスは、コンパイラによって生成された暗黙的なクラスを使用します。
派生クラスのコピー/割り当ては、ユーザー定義のコピー コンストラクター/割り当て演算子を呼び出しますか? または、基本クラスを呼び出すユーザー定義バージョンを実装する必要がありますか?
ご協力ありがとうございました。
c++ - 代入演算子が、一致するコンストラクターとは異なることを行うのはなぜですか?
私はいくつかのブーストコードを読んでいて、これに出くわしました:
すべてのコンストラクターを代入演算子にマッピングしているようです。素晴らしい。しかし、なぜC++はそれらに異なることをさせることを選んだのでしょうか?私が考えることができるのはscoped_ptrだけですか?
c++ - コンストラクターまたは代入演算子
この場合、どちらがコンストラクターまたは代入演算子と呼ばれるかを説明するC++標準の定義がありますか。
それとも、コンパイラの最適化の問題ですか?
c++ - 代入演算子のパラメータは参照でなければなりませんか?
C++でクラスの代入演算子をオーバーロードするとき、そのパラメータは参照でなければなりませんか?
例えば、
それはできますか
?
ありがとう!
objective-c - Objective C では、if (object == nil) と if (nil == object) に違いはありますか?
私はに傾くだろう
しかし、いくつかのチュートリアルでの使用に気づきました
これは単なるスタイルの問題ですか、それともどちらかの形式を使用する正当な理由がありますか?
c++ - 代入演算子のオーバーロードの問題
この問題は私を混乱させました。コードの最初の部分は、クラッシュすることなく正常に動作し、s1 を s2 に完全に正常に割り当てます。しかし、コードの 2 番目のグループは、プログラムをクラッシュさせます。
なぜこれが起こっているのか、何が問題なのか、誰にも分かりますか?
コード 1:(動作)
コード 2:(割り当て時にクラッシュ)
画面クラスの代入演算子:
Field クラスの代入演算子:
どんな入力でも大歓迎です:)
c++ - コピー代入演算子が参照/定数参照を返さなければならないのはなぜですか?
C++ では、コピー代入演算子から参照を返すという概念がよくわかりません。コピー代入演算子が新しいオブジェクトのコピーを返せないのはなぜですか? さらに、 classA
があり、次の場合:
はoperator=
次のように定義されます。
c++ - 戻り値参照のコピー構築と割り当ての防止
ソースを制御できないクラスのインスタンスへの参照を返す関数がある場合は、次のように言いますlist<int>
。
その値が別の参照にのみ割り当てられるようにしたい。
ユーザーが代わりに行う場合:
ユーザーは元のリストではなく、リストのコピーのみを操作するため、コンパイル時のエラーにしたいと考えています (これは、アプリケーションで意図されている/求められているものではありません)。
上記のコピー構築と割り当てを防ぐ方法はありますか (ある種の「ラッパー」クラスを介して)。
理想的には、ラッパー クラスを使用する場合、たとえばwrapper<T>
、任意のタイプのオブジェクトに対して機能するようにしたいと考えていますT
。
はい、私が制御できるクラスの場合、コピーコンストラクターと代入演算子を次のように単純に作成できることを知っています。private
コピー構築と割り当てを禁止する。std::list
しかし、上記のように、たとえば、単純にコピーコンストラクターと代入演算子を作成できない場合にこれを実行したいと考えていますprivate
。
c++ - 一時値を LValue として渡す
非標準だと思う次のイディオムを使用したいと思います。戻り値の最適化を利用してベクトルを返す関数があります。
次に、私は使用したいと思います
some_func
LValue を返しません。上記のコードは理にかなっており、このイディオムは非常に便利であることがわかりました。ただし、規格外です。VC8 は最高の警告レベルでのみ警告を発しますが、他のコンパイラはそれを拒否するのではないかと思います。
私の質問は:私がやりたいのとまったく同じことを達成する方法はありますか(つまり、ベクトルを構築し、別のベクトルに代入し、古いものを破棄します)、準拠しています(代入演算子を使用しません。以下を参照) ?
私が書いたクラスでは、通常、代入を次のように実装します。
コピー省略を利用して、私の問題を解決します。ただし、標準タイプの場合swap
は、一時的な無駄なコピーが必要ないため、本当に使用したいと思います。
また、VC8 を使用して標準 C++ を生成する必要があるため、C++0x とその右辺値参照について聞きたくありません。
編集:最後に、私は思いついた
左辺値を使用する場合、y が一時的な場合、コンパイラはコピー コンストラクターへの呼び出しを自由に最適化し、左辺値がある場合に使用するためstd::swap
です。私が使用するすべてのクラスは、 の愚かでないバージョンを実装するために「必要」ですstd::swap
。
vb.net - vb.net 構造で代入演算子を定義できますか?
私は、実際にはより多くの機能を備えた単純なバイトである構造を持っています。
私はそれを次のように定義しました:
次の 2 つの機能が必要です。
これを達成する方法はありますか?
Structure から継承する方法があれば、単純に Byte から継承して機能を追加します。基本的には、カスタム機能を備えた byte Structure が必要です。
私の質問は、新しいシングルトン メンバーの値の型を定義したい場合 (たとえば、ニブル型を定義したい場合など) にも有効であり、数値または他の言語への割り当てを使用して設定できるようにしたい場合にも有効です。型付き表現。
つまり、次の Int4 (ニブル) 構造を定義して、次のように使用できるようにしたいと考えています。