青山です。 On Thu, 4 Nov 1999 17:26:47 +0900, Shin-ichiro Hara <sinara / blade.nagaokaut.ac.jp> wrote: > 参照渡しというのは、C++ での > > void foo(int &n) { > n = 1; > } > main() { > int n = 0; > foo(n); // n=>1 > } なるほど。C++ って、強引にアドレス(参照)を引き出して持って来られるので すね。しかし、n を渡していると、やはり値渡しの参照引き出されというか、 なんか違和感がありますね。 > みたいのを言うんじゃないかしら。参照の値渡しは > > void foo(int *p) { > *p = 1; > } > main() { > int n = 0; > foo(&n); // n=>1 > } > > ですかね。 暗黙の内に引き出されるのではなく、明示的に渡しているという差だけで、こ ちらも同じく値の参照渡しかと。 > では、参照の参照渡しというのは、、、もういいか。(^^; int *n = 0; foo(n); 言葉の定義によるかもしれませんが、参照の参照渡しを上のようだとすると、 その他、参照の値渡し、 int *n = 0; foo(*n); で、値の値渡し、 int n = 0; foo(n); という感じになるような気がします。 で、Ruby はどれかというと、オブジェクト(値)の名札(参照)渡しですから、 先の原さんの例の両方が相当すると思います。 ただ、C++ の参照は、まさに参照で、アドレス演算子では無いという事ですか ら、その点では C++ の例の方が確かに近いですね。 -- 青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>