「参照渡し」と「参照の値渡し」
@tkmusic1976 ポインタを渡すことを参照渡しと思ってたけど、どうもC++の文脈でいう参照っていみちがうんですかね。perlのリファレンスみたいなもの??
2011-12-08 01:36:52@ikeike443 javaでは変数が持つ参照(インスタンスのアドレス)を値渡しします。インスタンスのアドレスが入った変数のアドレスを渡す(参照渡し)とは違います。
2011-12-08 01:39:05@tkmusic1976 あーメンバは書き換えられるけど、引数自体の指すアドレスを書き換えることはできないってことすかね
2011-12-08 01:42:10Object a = new Object; このとき変数 a にはヒープ上のインスタンスのアドレスが入っている。aのアドレスを渡すのが参照渡し。aの値をスタック上のメソッドの変数にコピーするのが値渡し。javaでは後者しかできない。
2011-12-08 01:44:00@ikeike443 aの中のメンバ(aがもつ参照がしるすヒープ上のインスタンスのメンバ)のことですかね?setterがあれば変数が渡されたメソッドから書き換える事は可能です。
2011-12-08 01:55:29@tkmusic1976 はい。でしたよね。そう言えばたしかにjavaにはpascalのvarはなかったですね。つまらんことで時間とってさーせん。。
2011-12-08 02:00:14@ikeike443 参照渡しがしたければ COBOL or DELPHI という結論でいかがでしょうか!?
2011-12-08 02:01:24@tkmusic1976 参照渡しをしたいというシチュエーションはないので大丈夫です! そういうシチュエーションにならないようにしたい!
2011-12-08 02:03:39@ikeike443 あぁ, そうか. 確かに. もう忘れちゃいましたけど, Delphi の var って C++ の参照渡しと同じでしたっけ?
2011-12-08 02:12:14@ikeike443 COBOLについて考える必要はありません。感じて下さい。COBOLはみんなの日々の暮らしを影でそっと支えてます。
2011-12-08 02:16:40