teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

* の追加

2020/05/14 00:53

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -31,7 +31,7 @@
31
31
  **追記**
32
32
  `a.child = new Student(0, "nobody");` の代わりに、
33
33
  `Student c(0, ""); a.child = &c;` と書いても落ちなくなります。
34
- とにかく、`a.child = b;` で b の実体を丸ごとコピーするためには、
34
+ とにかく、`*a.child = b;` で b の実体を丸ごとコピーするためには、
35
35
  その前に a.child が Student の領域を指していなければなりません。
36
36
 
37
37
  `a.child =` はポインタへの代入ですが、

2

補足説明の追加

2020/05/14 00:53

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -32,4 +32,7 @@
32
32
  `a.child = new Student(0, "nobody");` の代わりに、
33
33
  `Student c(0, ""); a.child = &c;` と書いても落ちなくなります。
34
34
  とにかく、`a.child = b;` で b の実体を丸ごとコピーするためには、
35
- その前に a.child が Student の領域を指していなければなりません。
35
+ その前に a.child が Student の領域を指していなければなりません。
36
+
37
+ `a.child =` はポインタへの代入ですが、
38
+ `*a.child =` はポインタへの代入ではありません。実体のコピーです。

1

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

2020/05/13 20:32

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -26,4 +26,10 @@
26
26
  }
27
27
  ```
28
28
  連結リストや木構造など、同一クラスへのポインタを持つクラスはいくらでもあります。
29
- でも、使用するときは、a.child = &b; が普通です。
29
+ でも、使用するときは、a.child = &b; が普通です。
30
+
31
+ **追記**
32
+ `a.child = new Student(0, "nobody");` の代わりに、
33
+ `Student c(0, ""); a.child = &c;` と書いても落ちなくなります。
34
+ とにかく、`a.child = b;` で b の実体を丸ごとコピーするためには、
35
+ その前に a.child が Student の領域を指していなければなりません。