問題タブ [pass-by-value]
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 ++(暗黙的または明示的)値コンストラクターは、引数のコピーをオブジェクトに格納する必要がある場合、値またはconstへの参照によってパラメーターを受け入れる必要がありますか?
これが私が考えることができる最短の例です:
ここでの考え方は、fooオブジェクトが作成されるさまざまな方法のいずれかで、fooオブジェクトが作成されるときにbarのコピーコンストラクターの呼び出しを最小限に抑えたいということです。
私はコピーの省略と(名前付き)戻り値の最適化について少し知っていて、「スピードが欲しいですか?値を渡す」を読んだことに注意してください。ただし、この記事ではこのユースケースを直接扱っているとは思いません。
編集:私はより具体的にする必要があります。
、または基本的な組み込み型であるsizeof(bar)
かどうかがわからないとします(テンプレートパラメータの場合もあれば、クラスではなくクラステンプレートの場合もあります)。また、'コンストラクターをインライン化できる(または、さらに言えば's )ことができると思い込まないでください。少なくとも、RVOを実装するコンパイラを使用している可能性があると想定してください。bar
bar
foo
foo
bar
私が望んでいるのは、このような呼び出しが(初期化リストで実行しbar
ている場合でも)コピーコンストラクターへの呼び出しをまったく呼び出さない可能性があることです(コンパイラーの最適化が与えられた場合)。_b(b)
foo
foo
(C ++ 98標準を前提として)これを実行できる可能性はありますか?その場合、値ではなく参照から定数へのパラメーターを受け入れると、多かれ少なかれ機能する可能性がありますか?
c++ - f(const string&)とf(const string)の違いはありますか?
上記の例を考慮すると、参照渡し変数を変更することも、値渡し変数を変更することもできませんでした。各メソッドの出力は同じです。これら2つのメソッドに違いがないため、C++を使用する理由両方の方法をサポートしますか?
ありがとう。
c# - ref ではなく値でキャッシュに .net COM ラッパーを追加する
私のコードでは、COM インターフェイスを介して従来の Delphi オブジェクトをインスタンス化しています。このクラスは何度もインスタンス化する必要があるため、インスタンス化のオーバーヘッドを下げるために、すべての呼び出しの 70% が共通の結果オブジェクトを持つポイントでキャッシュします。
ただし、キャッシュ後にオブジェクトを変更すると、変更もキャッシュに保持されます。これは、COM ラッパー インスタンスが値ではなく参照によって渡されていると思わせます。
キャッシュ内のオブジェクトが参照ではなく値で渡されるようにするにはどうすればよいですか?
java - キャッシュ層を使用した Java オブジェクト参照
J2EE アプリケーションにキャッシング層を作成しました。この例では、Ehcache を使用します。これにより、いくつかの課題が生じました。
この例を見てみましょう。
注意しないと、これらのオブジェクトのいずれかに変更を加えると、他のオブジェクトに影響を与えます (同じオブジェクトを参照します)。orderitem をデータベースに保存すると、status=2 になります。
これをどのように解決するのが最善でしょうか?
各オブジェクトに .copyObject() メソッドを作成してみました。新しいオブジェクトを作成し、すべての値を設定するだけです。しかし、これは良い解決策とは思えません。
この例は、単に説明するためのものです。コードはそれよりもはるかに複雑ですが、結果は同じです。
**********************2010年7月15日更新************************ **************************
EHCache 2 には、copyRead() と copyWrite() を有効にするオプションがいくつかあります。そして、これは私の問題をすべて解決します:)
php - PHP の配列は、値として、または新しい変数への参照としてコピーされ、関数に渡されるときにコピーされますか?
1) 配列が引数としてメソッドまたは関数に渡される場合、それは参照渡しですか、それとも値渡しですか?
2) 配列を変数に代入するとき、新しい変数は元の配列への参照ですか、それとも新しいコピーですか?
これを行うのはどうですか:
$b
への参照ですか$a
?
c++-cli - 値で渡されるリスト (または類似のもの) を含む CLI 値クラスを作成するにはどうすればよいですか?
次のように、構造体の STL ベクトルを含む構造体を使用する C++ ライブラリがあります。
ライブラリの CLI ラッパーを作成していますが、上記の構造体型に相当するものが必要です。次のように、リストをベクトルと同等のものとして使用することを考えていました。
ただし、List<T> は参照型であるため、リストは値ではなく参照によって渡されます。残りのメンバーとともに、値で渡されるリスト (または類似のもの) を含む CLI クラスを作成する方法はありますか?
c++ - C++ のポインタと関数
「値による呼び出し」に関する大学のコースの講義ノートから:
によって呼び出された
n の値を 100 に変更します。
「int *ip」と言うとき、正確には何を意味するのでしょうか? 整数型のポインタ? もしそうなら、引数として np を指定して fun() を呼び出すと、np は整数ではない n のアドレスを持っているため、エラーが発生するはずではありませんか?
そして、ip の値を 100 に変更します。これは、n がアドレス 100 の「メモリ スロット」にある値を持っているということではないでしょうか。私は何かが欠けていると確信しています。:)
c++ - 値渡しより参照渡しの方がコストがかかる
C++ で値渡しよりも参照渡しの方がコストがかかる場合はありますか? もしそうなら、それはどのようなケースですか?
c++ - C ++の関数にオブジェクトを渡す方法は?
私はC++プログラミングに不慣れですが、Javaの経験があります。C++の関数にオブジェクトを渡す方法についてのガイダンスが必要です。
ポインター、参照、または非ポインターと非参照の値を渡す必要がありますか?Javaでは、オブジェクトへの参照を保持する変数だけを渡すので、そのような問題はないことを覚えています。
これらの各オプションをどこで使用するかも説明できれば素晴らしいと思います。
c++ - C++ 関数は、参照を取得する必要がある場所で値を取得します
私はちょうどC ++を学んでいて、Cから来て、本で見ているいくつかの関数呼び出しが私を混乱させます:
C では、これは機能しない可能性があります。それを行った場合、出力を取得する方法がありません。参照ではなく値で渡しているためです。なぜこれが c++ で機能するのですか? 参照と逆参照は暗黙的に行われますか (コンパイラーは cin.get がポインターを必要とすることを認識しているため、参照されます)?