問題タブ [pass-by-pointer]
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++ - オブジェクトを誤ってコピーしないようにする - 利用可能なテクニック
(関連する質問が 3 つあります)
私が C++ で遭遇する最も厄介なことの 1 つは、誤ってオブジェクトを渡したりコピーしたりしてから、その状態が期待どおりではないことに疑問を抱くことです。最近、ポインタ渡しをしている状況がありましたが、期待した状態が得られず、参照渡しでポインタを渡さなければならないことが判明しました。
この状況を考えると、確認できますか:
x
の更新状態を維持するために、次の手法を利用できますy
。
また
また
1) ?の外側に変更を加えた場合、上記のすべての選択肢はオブジェクトx
内で更新され続けます。y
x
y
2) x がベクトルまたは別の STL コレクションのオブジェクトであった場合、上記は変わりますか? それとも同じルールが適用されますか?
3) コンストラクター内のポインターがデータ メンバーに割り当てられているクラスについてはどうですか。
y
そうしないと、ポインターのコピーが割り当てられるため、ここで参照によって渡す必要がありますか? 私がここで尋ねた別のSOの質問のために、私はこれを尋ねます:
c++ - C++ はオブジェクトを値または参照で渡しますか?
ここで答えが見つからなかった簡単な質問。
私が理解しているのは、呼び出し中に関数に引数を渡している間です。
int
、などの単純なデータ型の場合float
、関数は値によって呼び出されます。
しかし、myVariable
が配列の場合は、開始アドレスのみが渡されます (この関数は値による呼び出し関数ですが)。
がオブジェクトの場合myVariable
も、コピーを作成して渡すのではなく、オブジェクトのアドレスのみが渡されます。
では、質問に戻ります。C++ は参照または値によってオブジェクトを渡しますか?
c++ - ポインターを値で渡す
次の機能を持つ:
pMediaType が参照によって渡され、メソッド内のオブジェクトに対して行われたすべてが保持されるように呼び出すにはどうすればよいですか?
d - D は値をコピーして渡しますか?
私が行った場合:
b
はを指していますか、それともコピーですかa
?