回答編集履歴
4
本文修正
test
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
こちらに詳しいです。
|
6
|
+
|
7
|
+
[http://wisdom.sakura.ne.jp/programming/cpp/cpp17.html](http://wisdom.sakura.ne.jp/programming/cpp/cpp17.html)
|
6
8
|
|
7
9
|
|
8
10
|
|
@@ -14,8 +16,4 @@
|
|
14
16
|
|
15
17
|
コピーコンストラクタを作ることで、関数内でもコンストラクタが呼び出され、それぞれでnameについてnewによる領域確保がなされます。
|
16
18
|
|
17
|
-
[http://wisdom.sakura.ne.jp/programming/cpp/cpp17.html](http://wisdom.sakura.ne.jp/programming/cpp/cpp17.html)
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
3
修正の補足
test
CHANGED
@@ -1,3 +1,21 @@
|
|
1
1
|
スミマセン、間違っていました。C#とごちゃごちゃになってしまいました。。
|
2
2
|
|
3
3
|
|
4
|
+
|
5
|
+
こちらに詳しいです。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
コンストラクタはmain関数内で1回のみ、ShowDataShowData関数を抜けるときと、main関数を抜けるときの2回、deleteが呼ばれてしまっています。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
それで正しく動かず、実行時にエラーが発生してしまっています。
|
14
|
+
|
15
|
+
コピーコンストラクタを作ることで、関数内でもコンストラクタが呼び出され、それぞれでnameについてnewによる領域確保がなされます。
|
16
|
+
|
17
|
+
[http://wisdom.sakura.ne.jp/programming/cpp/cpp17.html](http://wisdom.sakura.ne.jp/programming/cpp/cpp17.html)
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
|
2
修正
test
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
|
1
|
+
スミマセン、間違っていました。C#とごちゃごちゃになってしまいました。。
|
2
|
-
|
3
|
-
補足すると、確かに「値渡し」ではあるのですが、ポインタがコピーされてその値が関数に渡されています(ポインタが値渡しされています)。つまり、オブジェクトの中身はコピーされていません。
|
4
2
|
|
5
3
|
|
6
|
-
|
7
|
-
TAKAYUKI_MIWAさんの意図されている「値渡し的なこと」をしたい場合は、いわゆるクローン(newなどで新たにオブジェクトを生成して、メンバー変数の値各々をコピー)を作って、それを関数に渡す必要があります。
|
1
詳細を補足
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
1
|
クラスのインスタンス(オブジェクト)を引数に渡した場合、C++ではそのインスタンス(オブジェクト)のポインタが関数内に渡されます。
|
2
2
|
|
3
|
+
補足すると、確かに「値渡し」ではあるのですが、ポインタがコピーされてその値が関数に渡されています(ポインタが値渡しされています)。つまり、オブジェクトの中身はコピーされていません。
|
4
|
+
|
5
|
+
|
6
|
+
|
3
|
-
値渡し
|
7
|
+
TAKAYUKI_MIWAさんの意図されている「値渡し的なこと」をしたい場合は、いわゆるクローン(newなどで新たにオブジェクトを生成して、メンバー変数の値各々をコピー)を作って、それを関数に渡す必要があります。
|