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

質問編集履歴

2

タイトルの詳細化

2021/11/29 06:36

投稿

tokotaku
tokotaku

スコア63

title CHANGED
@@ -1,1 +1,1 @@
1
- C++ンスタンスについて
1
+ メンバ変数初期化を定義時にやるかコンストラクでやるか
body CHANGED
File without changes

1

具体例をコード付きで追記しました

2021/11/29 06:36

投稿

tokotaku
tokotaku

スコア63

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,37 @@
1
1
  C++でのインスタンスに関する質問です。
2
2
 
3
- インスタンスをヘッダファイル内で初期化することと、コンストラクタ等で初期化することに違いはあるのでしょうか?
3
+ インスタンスをヘッダファイル内で初期化することと、コンストラクタ等で初期化することに違いはあるのでしょうか?
4
+
5
+ 例えば、MyClassA、MyClassB、MyClassCがあるとします。(それぞれのクラスの処理内容は省略します。)
6
+ MyClassBとMyClassCをMyClassAで利用するためにインスタンス化をする場合
7
+
8
+ MyClassA.h
9
+ ```
10
+ #include "MyClassB.h"
11
+ #include "MyClassC.h"
12
+
13
+ class MyClassA
14
+ {
15
+ public:
16
+ MyClassA();
17
+ private:
18
+ MyClassB* myClassB = new MyClassB(this); //ここで先に初期化
19
+
20
+ MyClassC* myClassC; //宣言だけしてcpp内で初期化
21
+ }
22
+ ```
23
+
24
+ MyClassA.cpp
25
+ ```
26
+ #include "MyClassC.h"
27
+
28
+ MyClassA::MyClassA(){
29
+ myClassC = new MyClassC(this);
30
+ }
31
+ ```
32
+
33
+ このMyClassBとMyClassCのインスタンスの初期化方法の違いでどちらが良いなどはあるのでしょうか?
34
+
4
35
  様々なソースコードを読んでいると、ヘッダ内でインスタンス化と同時に行っているものもあればソース内で行っているものもありました。
5
36
  調べてみても特にそういった話が見当たらないので、疑問に思いました。
6
37
  これに関しては個人の好みの問題なのでしょうか?