回答編集履歴

4

本文修正

2016/01/21 03:43

投稿

hsk
hsk

スコア728

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

修正の補足

2016/01/21 03:42

投稿

hsk
hsk

スコア728

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

修正

2016/01/21 03:36

投稿

hsk
hsk

スコア728

test CHANGED
@@ -1,7 +1,3 @@
1
- クラのイスタンス(オブジェクト)を引数に渡した場合、C++ではそのインスタンス(オブジェクト)のポインタが関数内渡され
1
+ ミマセ、間違っていましたC#とごちゃごちゃなってしいました
2
-
3
- 補足すると、確かに「値渡し」ではあるのですが、ポインタがコピーされてその値が関数に渡されています(ポインタが値渡しされています)。つまり、オブジェクトの中身はコピーされていません。
4
2
 
5
3
 
6
-
7
- TAKAYUKI_MIWAさんの意図されている「値渡し的なこと」をしたい場合は、いわゆるクローン(newなどで新たにオブジェクトを生成して、メンバー変数の値各々をコピー)を作って、それを関数に渡す必要があります。

1

詳細を補足

2016/01/21 03:31

投稿

hsk
hsk

スコア728

test CHANGED
@@ -1,3 +1,7 @@
1
1
  クラスのインスタンス(オブジェクト)を引数に渡した場合、C++ではそのインスタンス(オブジェクト)のポインタが関数内に渡されます。
2
2
 
3
+ 補足すると、確かに「値渡し」ではあるのですが、ポインタがコピーされてその値が関数に渡されています(ポインタが値渡しされています)。つまり、オブジェクトの中身はコピーされていません。
4
+
5
+
6
+
3
- 値渡しのようなことをしたい場合は、クローン(newなどで新たにオブジェクトを生成して、メンバー変数の値各々をコピー)を作って、それを渡す必要があります。
7
+ TAKAYUKI_MIWAさんの意図されている「値渡しなことをしたい場合は、いわゆるクローン(newなどで新たにオブジェクトを生成して、メンバー変数の値各々をコピー)を作って、それを関数に渡す必要があります。