回答編集履歴

1

コメントに対する説明を追記

2021/02/12 21:25

投稿

actorbug
actorbug

スコア2420

test CHANGED
@@ -83,3 +83,39 @@
83
83
 
84
84
 
85
85
  デフォルトコンストラクタで作成された一時オブジェクトの`i`は-1なので-1が出力される。
86
+
87
+
88
+
89
+ ---
90
+
91
+
92
+
93
+ 追記(1.のカッコ内の説明)
94
+
95
+
96
+
97
+ 初期化が個別のメンバ変数ごとに独立していれば、初期化子で共通処理関数を呼び出せる。
98
+
99
+ この場合は、デフォルトコンストラクタが呼ばれないため、
100
+
101
+ 2.で説明するパフォーマンス阻害は発生しない。
102
+
103
+
104
+
105
+ ```C++
106
+
107
+ class Test3 {
108
+
109
+ std::vector<int> v;
110
+
111
+ static std::vector<int> calc(int n) { return { n, 2, 3 }; }
112
+
113
+ public:
114
+
115
+ Test3() : v(calc(1)) {}
116
+
117
+ Test3(int n) : v(calc(n)) {}
118
+
119
+ };
120
+
121
+ ```