問題タブ [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++ - RAIIと割り当て
sqlite3接続用に次のクラスを作成しました。
次に、次のように接続を初期化できます
ただし、この接続を共有したり、クラスのメンバーとして保存したりしたいので、デフォルトの代入演算子に問題がありますoperator=
。のようなことをする
各変数がスコープ外になると、データベースポインタで2つのsqlite3_close呼び出しが発生します。リソースを別の変数に割り当てる必要がある場合、RAIIでこの問題をどのように克服しますか?
c++ - コピーアンドスワップの慣用句とは何ですか?
このイディオムは何ですか? また、いつ使用する必要がありますか? どの問題を解決しますか? C++11を使うとイディオムが変わる?
あちこちで言及されていますが、「それは何ですか」という単一の質問と回答がなかったので、ここにあります。以前に言及された場所の部分的なリストを次に示します。
c++ - C++0xの特別なメンバー関数
特別なメンバー関数に関するウィキペディアの記事には、ムーブコンストラクターとムーブ代入演算子への参照は含まれていません。
エントリを更新したいのですが、0x標準が何を言っているのかわかりません。
これら2つの機能に関するルールは何ですか?それらはコンパイラーによって自動的に生成されますか?もしそうならいつですか?
編集:ウィキペディアのページを更新しました。誰かがそれを感じたら、それを形に編集してコミュニティを助けてください(必要な場合)。
c++ - 代入セマンティクスを持つ非所有ホルダー
そのデータを所有せずに、いくつかのデータへの参照を保持する必要があるクラスがあります (つまり、実際のデータはスコープ外に出ないことが保証されています)。特に、クラスはコピーを作成できません。データのサイズは簡単に数ギガバイトになります。
さて、通常の実装(私が推測する)は、データへの参照を持つことです:
const
(問題には全く関係ありませんのでご注意ください)。
今、私は絶対にこのクラスを割り当て可能にする必要があります (つまり、作業中の を持っていoperator =
ます)。これはかなり一般的な問題だと思っていましたが、以前にどのように解決したかを思い出せません。
問題は、参照を割り当てることができず、これを回避する方法がないことです。私が思いついた唯一の解決策は、代入演算子の代わりに配置 new を使用することです。
現在、これは機能し、標準に準拠しています。しかし、それは確かに醜いです。いいえ - 受け入れられません。
だから私は代替案を探しています。1 つのアイデアはポインターを使用することですが、コンストラクターが実際に動作することが保証されているかどうかはわかりません (また、従わなければならないインターフェイスのために、ポインターを渡すことは不可能です)。
しかし、可能であれば、リファレンスを使用したいと思います。のみ - 代入演算子を実装する方法は?
テスト ケースとして、次のコードを検討してください。
(また、これを明確にするために、私たちが話しているタイプは非 POD であり、標準に準拠したソリューションが必要です。)
php - 変数を代入するときの「=」と「=&」の違いは何ですか?
と の違いを理解しようとしてい$a=&$b
ます$a=$b
。&
変数を参照変数にすることはわかっています。しかし、次のテストでも同じ結果が得られました。誰でも違いを説明できますか?ありがとう。
scala - 既存の変数への Scala 多重代入
私は次のようなことができます
変数が既に存在する場合はどうなりますか? フィルターを介して同じデータセットを実行していますが、それらをチェーンしたくありません (長い名前など)。これは私が試したものですが、期待について不平を言っています; 最後の行の = の代わりに:
中間タプルを回避する方法はありますか?
c++ - オーバーロードされた代入演算子が呼び出されない
perform
すべての変数値をコピーするクラスのオーバーロードされた代入演算子を作成しました。例:Exp.cppで
別のクラスoutput
で、 へのポインタを宣言しましたabc
。
c# - C# でのメソッド パラメーターの割り当て
以下のコードでは、Bar(int y) のメソッド パラメータ y に x または 1 の値が割り当てられますか? 論理的には同等だと思いますが、代入演算を理解したいです。
c++ - 配列メンバーによるデフォルトのコピー割り当て
次のようなクラス定義があります。
コピーの割り当てが正しく機能することを確認する単体テストが失敗しました。驚いたことに、buffer[]配列の途中の1バイトが正しくコピーされませんでした。
私の理解では、デフォルトのコピー代入演算子はメンバーごとのコピーを実行し、配列メンバー(配列メンバーへのポインターではない)の場合は、配列の要素ごとのコピーを必要とします。私は間違っていますか?
ここでの私の直感は、アレイの真ん中に踏みつけられたどこかでぶら下がっているポインターに噛まれたということです。しかし、たとえば、これらのオブジェクトのベクトルを別のベクトルにコピーすると、これが繰り返し発生します。
誰かが私がどこで間違っているのか教えてくれませんか?
編集:
これを少し拡張するために、クラスはPODタイプではありません。いくつかの抽象基本クラスから派生しているため、仮想デストラクタがあります。ただし、配列は唯一のデータメンバーであり、単体テストで壊れた使用法は次のとおりです。