回答編集履歴
1
肝心な事を追記
test
CHANGED
@@ -23,3 +23,29 @@
|
|
23
23
|
|
24
24
|
|
25
25
|
他の方と似たり寄ったりとなっていますが、どうでしょう。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
--------------------
|
30
|
+
|
31
|
+
参照は、アドレスでなく、ハンドル? だったか。 ラベルと言っても良いかも。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
Main() で Hoge, Huga と名付けられているオブジェクトの実体を Obj1, Obj2 とします。
|
36
|
+
|
37
|
+
--> Main()では、 Obj1 は、Hoge, Obj2 は Huga の名前(ラベル)で呼ばれる。これは、 Cal()の引数として渡され、Cal()内では、 a, b と呼ばれる。 (a <-- Obj1, b <-- Obj2)
|
38
|
+
|
39
|
+
ここで、 a = b の処理は、 Obj2 に a と言う名前(ラベル)を付ける事に相当します。これは、 Cal()内での話で、Main()での Hoge, Huga にはなんの関係もありません。
|
40
|
+
|
41
|
+
これに対し、a.x = 10 は、aと言う名前(ラベル)を持つ Obj1 の中にある xを変更する処理となります。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
なぜ、アドレスと言うのが間違いかと言うと、Obj1 と Obj2 を管理しているのは別(OS?) なので、
|
46
|
+
|
47
|
+
Obj1, Obj2 はその時々の都合でどこに置かれるか分からないから。例えるなら、最初、倉庫A にあったが、一杯になったので、倉庫Bに移される事があるから。で、Obj1 を参照するという事は、倉庫の管理人に対し、 Obj1 を要求する事になります。 (と、書いていたら、i-node と一緒? て気がしてきた)
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
通常、気にする必要はありませんが、アンマネージドの C++ とI/Fする時に、問題となり、メモリをロック(勝手に倉庫を動かすな、と言う指定)しないと不正な結果となります。
|