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

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

xquery - xquery 割り当てで if else を使用する方法

if 条件を使用して、xquery の変数に値を代入しようとしています。これを行う方法がわかりません。

これは私が試したものです:

このコードは、[XPST0003] 不完全な 'if' 式エラーをスローします。誰かがこれを修正するのを手伝ってくれますか?

また、誰かが xquery を学ぶための良いチュートリアルを提案してくれませんか?

ありがとう、ソニー

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

c++ - 基本クラスのポインターで呼び出されたときに、代入演算子はオーバーロードされていませんか?

私は次の問題に遭遇しました。これは、C++の動作についてほとんど知らないことを私に証明しました。

純粋仮想関数を持つ基本クラスを使用します

および型の派生クラス

どちらにも代入演算子が実装されています。特に、Derivedの代入演算子は、f1のデータをコピーします。私のコードでは、Derivedクラスの2つの新しいインスタンスを作成します

ここで代入演算子を呼び出すと

Derivedの代入演算子は呼び出されず、f1のデータはコピーされません!私がする場合にのみ機能します

代入演算子がオーバーロードされない理由を誰かが説明できますか?

ありがとう!

0 投票する
4 に答える
1553 参照

c++ - C++-コピーコンストラクタの代わりに作成時に代入演算子を呼び出す

ネイティブタイプのような構造体間の明示的な変換を強制したい:

代入演算子とコピーコンストラクターを使用して同じことを行うことを考えましたが、動作が異なります。

Struct s3 = other_struct;デフォルトのコンストラクターを使用して3番目のケースのコンストラクトs3を取得し、代入演算子を呼び出すためのトリックはありますか?

これはすべて、必要に応じてコンパイルおよび実行されます。C ++のデフォルトの動作は、新しいインスタンスを作成してコピーコンストラクターを一度に呼び出すときに、代入演算子の代わりにコピーコンストラクターを呼び出すことですつまり、;ではありませんMyStruct s = other_struct;。それを回避するためのトリックがあるかどうか疑問に思っています。 。MyStruct s(other_struct)MyStruct s; s = other_struct;

編集:「明示的な」キーワードは私が必要としていたものです!

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

javascript - JavaScriptで割り当て操作をカスタマイズ/オーバーライドする方法はありますか?

stringを割り当てるたびに、実際には余分なコードなしでstring objectを割り当てたいと思います。

これvar foo = "bar";
var foo = new String("bar");

基本的に、割り当てをハイジャックします。


フォローアップ:
上記が不可能なstring場合、String オブジェクトではなく、変数の型をプロトタイプ化する方法はありますか?

armandoが指摘したように、fooこれは文字列型になりますが、基本的にはカスタマイズされた配列です。関数をそのクラスにプロトタイプ化できるとよいでしょう。

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

c++ - 代入演算子のオーバーロードに非メンバー関数を使用できないのはなぜですか?

代入演算子は、メンバー関数を使用してオーバーロードできますが、非メンバー関数は使用できませんfriend

次のエラーが発生します。

エラー C2801: 'operator =' は非静的メンバーでなければなりません

friend代入演算子のオーバーロードに関数を使用できないのはなぜですか? コンパイラは、+=-=usingなどの他の演算子をオーバーロードすることを許可していfriendます。をサポートする際の固有の問題/制限は何operator=ですか?

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

c++ - C++ - デフォルト型の代入演算子のオーバーロード

「int」、「long」などの型の代入演算子をオーバーロードしたい。つまり、次のようなコードを使用したい:

どうやら代入演算子はフレンド関数にはなり得ません。上記を達成するにはどうすればよいですか?

単純なものが欠けているかもしれませんが、これを行うための構文/方法がわかりません。

また、1 つの IMP 制限 - get/set メソッドは使用できません :: リリース コードでは、CX を int または long (必要に応じて) として型定義しますが、DEBUG コードでは、それをクラスとして使用します (自動何千もの場所で型チェックを行います)。コードは共通である必要があります。その理由は、CX をクラスにすると、コンパイラ (少なくとも使用しているバージョン) がすべての操作を最適化できないためです。


問題の 1 つは、これを通過させたくないということです。

以下のキャストソリューションは、ロング/ショートなどのコードも暗黙的に通過させると思います。(そうでない場合は、まさに私が探しているものです!)。

関連するメモとして、David の質問に答えます。私がリファクタリングしたい理由は、CX を 32 ビットまたは 64 ビットに切り替える機能が必要だからです。そのため、暗黙的な変換を禁止し、コンパイル時にそれらをキャッチしたいと考えています。今、逆 - (許可されていません

CX x = some_64_bit_int;

しかし許す

CX x = some_32_bit_int;

デフォルトでコンパイル時にアサートするテンプレート化された = 演算子を使用して達成しましたが、目的の型に合わせてオーバーロードしました。


これが悪い設計であると感じた場合、または他の代替案を試す必要がある場合 - 私が必要な理由は次のとおりです。何千行ものレガシーコードがあり、何かが「int」に型定義されているだけです。

次のような課題があちこちにあります。

CXをクラスに変更するプロジェクトに取り組んでいます。最初のフェーズでは、すべてのコンパイル エラー (CX をクラスにする際に発生) を修正し、コードへの変更をできるだけ少なくします。

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

automake - automakeの代入演算子の違い

automakeには2つの割り当てのバリエーションがあります。=と:=それらの間に違いはありますか?

0 投票する
8 に答える
31182 参照

c++ - const メンバーと代入演算子。未定義の動作を回避するには?

オブジェクトの std::vector と const-correctnessに関する質問に回答し、未定義の動作に関するコメントを受け取りました。同意できないので、質問があります。

const メンバーを持つクラスを考えてみましょう。

const_cast代入演算子が必要ですが、回答の1つから次のコードのように使用したくありません。

私の解決策は

未定義の動作 (UB) はありますか?

UB なしのソリューションは何でしょうか?

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

c++ - C++ 配列メンバーはコピー コントロール関数でどのように処理されますか?

これは私が長い間疑問に思っていたことです。次の例を見てください。

この特定の例でデフォルトのコンストラクターとデストラクターが何をするかは知っていますが (何もありません)、コピー コンストラクターとコピー代入演算子はどうでしょうか。

std::copyそれは、またはstd::uninitialized_copyまたはmemcpyまたは何を含みますmemmoveか?

0 投票する
8 に答える
331242 参照

c++ - 三つのルールとは何ですか?

  • オブジェクトのコピーとはどういう意味ですか?
  • コピーコンストラクタコピー代入演算子とは何ですか?
  • いつ自分で宣言する必要がありますか?
  • オブジェクトがコピーされないようにするにはどうすればよいですか?