回答編集履歴

3

* の追加

2020/05/14 00:53

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -64,7 +64,7 @@
64
64
 
65
65
  `Student c(0, ""); a.child = &c;` と書いても落ちなくなります。
66
66
 
67
- とにかく、`a.child = b;` で b の実体を丸ごとコピーするためには、
67
+ とにかく、`*a.child = b;` で b の実体を丸ごとコピーするためには、
68
68
 
69
69
  その前に a.child が Student の領域を指していなければなりません。
70
70
 

2

補足説明の追加

2020/05/14 00:53

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -67,3 +67,9 @@
67
67
  とにかく、`a.child = b;` で b の実体を丸ごとコピーするためには、
68
68
 
69
69
  その前に a.child が Student の領域を指していなければなりません。
70
+
71
+
72
+
73
+ `a.child =` はポインタへの代入ですが、
74
+
75
+ `*a.child =` はポインタへの代入ではありません。実体のコピーです。

1

new の代わりに自動変数の領域を使う方法を追加。

2020/05/13 20:32

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -55,3 +55,15 @@
55
55
  連結リストや木構造など、同一クラスへのポインタを持つクラスはいくらでもあります。
56
56
 
57
57
  でも、使用するときは、a.child = &b; が普通です。
58
+
59
+
60
+
61
+ **追記**
62
+
63
+ `a.child = new Student(0, "nobody");` の代わりに、
64
+
65
+ `Student c(0, ""); a.child = &c;` と書いても落ちなくなります。
66
+
67
+ とにかく、`a.child = b;` で b の実体を丸ごとコピーするためには、
68
+
69
+ その前に a.child が Student の領域を指していなければなりません。