最初に言わせてください。タイトルが、ここやインターネットで何度も回答された質問をしている疑いがあることを知っています. 私は確かに調査を行いましたが、満足のいく答えを見つけることができません。
私の質問は最後にこれに帰着します。Java Call By Value と C++ Call By Reference (ポインターを使用する場合) はなぜですか?
参照を渡す場合は Java で、ポインタを渡す場合は C++ でメソッド呼び出しを検討してください。結局、どちらの場合も、呼び出し元に表示される変更を加えることができます。また、どちらの場合も、オブジェクトのアドレスを関数に渡しています。実際、私はコピーしています。つまり、ポインターを渡すときにC ++でも値による呼び出しを行っていますよね?
次のコードを実行することで、その状況を簡単に確認できます。
#include <iostream>
void modify (int *i) {
int a = 5;
i = &a;
}
int main () {
int b;
int *i = &b;
std::cout << i << std::endl;
modify(i);
std::cout << i << std::endl;
return 0;
}
同じ住所を2回印刷します。
私にとっては、スワップ関数を実行できるプロパティを使用して参照による呼び出しを正当化するだけでは十分ではありません。参照ごとに呼び出しを行うものの核心を知りたいです。
前もって感謝します。