[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 1593] Re: ポインタの定義



やました です。

# 先週後半はインターネット端末をもたずにに旅行したので、
# 龜reply です。

> やましたさんは理解してらっしゃいそうな気がする
> のですが、誤解されやすいところなのでML宛てという
> ことでちょっと書いておきます。

いえ、理解していなかったことに今、気付きました。

Java の引数機構を「引数の型が、プリミティブ型のときは値渡し、
「オブジェクト型」(こんな型はないんですよね)は、参照渡し」
なんて妙な解釈をかってにしていました。(この曲解でも、辻褄は、
あうというか、合せたつもりなのですが。。。)

参照型(reference type)の値を「値渡し」しているだけなんですよね。

で、なんでそんな無茶苦茶な曲解していたか考えてみると、

Java のオブジェクトのフィールドやメソッドの呼出し構文
foo.hoge() の「.」に眩惑されていたことが判明。
Java の foo.hoge() はと C++ の foo.hoge() を同等視していました。
(Java の foo.hoge() はむしろ C++ の foo->hoge() ですよね。)

> しかしこれを単純に参照渡しと言い切ってしまうと
> 語弊があります。

というか、間違いですね。
 
> オブジェクト変数の「値」というのは、「どのオブジェクト
> を参照しているのか」であって、「参照先オブジェクトの
> 状態」のことではないというのがミソです。

この部分を勘違いしていました。
私は、「オブジェクト」変数という「表現」に眩惑されてしまっていました。

Java ではオブジェクトそのものは「右辺値」ではない
(つまり、オブジェクトそのものは第一級の計算対象ではない)ということを
今、理解しました。

私と前橋さんの理解の図式は同じだというような発言をしましたが、
私の理解と前橋さんの理解は違うものであって、さらに私の理解は
まちがっていました。m(_._)m > 前橋さん、小薮さん、all

--nobsun