回答編集履歴

3

メンバ初期化子リストの例をもうちょっと明確に提示

2022/12/04 03:50

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
@@ -52,4 +52,4 @@
52
52
  [追記1]
53
53
 
54
54
  dameoさんのアドバイスもありますね。(最近C++使ってなかったので失念していました。)
55
- メンバ初期化子リストを使えばnew/deleteを使わなくともコピーコンストラクタが働くので``member_B(ClassB(n))``のようにもできると思います。
55
+ メンバ初期化子リストを使えばnew/deleteを使わなくともコピーコンストラクタが働くので``ClassA(int n) : member_B(ClassB(n)){}``のようにもできると思います。

2

追記1

2022/12/04 02:21

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
@@ -46,3 +46,10 @@
46
46
  ただモダンなC++の場合は生のポインタを使わずにスマートポインタ( std::unique_ptr, std::shared_ptr等 ) を使うらしいですが。
47
47
 
48
48
  余談ですが、``ClassB(int n) {/*処理*/ };``の末尾にあるセミコロンは要りませんよ。
49
+
50
+ ----
51
+
52
+ [追記1]
53
+
54
+ dameoさんのアドバイスもありますね。(最近C++使ってなかったので失念していました。)
55
+ メンバ初期化子リストを使えばnew/deleteを使わなくともコピーコンストラクタが働くので``member_B(ClassB(n))``のようにもできると思います。

1

余談

2022/12/04 02:18

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
@@ -44,3 +44,5 @@
44
44
  みたいにしてnew/deleteを使って動的に生成する。ClassAのデストラクタが動く前までにmember_Bが破棄されている可能性も処理によってはあり得るのでif文とかで「member_Bが破棄されていなければ破棄する」とかみたいにする場合も。
45
45
 
46
46
  ただモダンなC++の場合は生のポインタを使わずにスマートポインタ( std::unique_ptr, std::shared_ptr等 ) を使うらしいですが。
47
+
48
+ 余談ですが、``ClassB(int n) {/*処理*/ };``の末尾にあるセミコロンは要りませんよ。