回答編集履歴
1
コメントに対する説明を追記
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
|
+
```
|