質問編集履歴
2
テスト用コードを削除
title
CHANGED
File without changes
|
body
CHANGED
@@ -58,7 +58,6 @@
|
|
58
58
|
|
59
59
|
A CreateA(bool flag)
|
60
60
|
{
|
61
|
-
#if 1
|
62
61
|
A a(1.5, 2.5, 3.5);
|
63
62
|
|
64
63
|
a.g_ = 4;
|
@@ -68,8 +67,8 @@
|
|
68
67
|
// NRVOされずにムーブコンストラクタを呼び出すための条件分岐
|
69
68
|
if(flag) {
|
70
69
|
return a;
|
71
|
-
}
|
70
|
+
}
|
72
|
-
|
71
|
+
|
73
72
|
A a2(7.5, 8.5, 9.5);
|
74
73
|
a2.g_ = 10.0;
|
75
74
|
a2.f_ = 11.0;
|
1
ソースコードの整形等
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
下記の`main.cpp`の`struct A`のようにヒープ領域のメモリを確保しないメンバ変数のみ持つクラスのムーブコンストラクタはコピーコンストラクタと全く同じ処理を行い、効率性に違いはないという認識で大丈夫でしょうか?
|
4
4
|
|
5
|
-
|
5
|
+
main.cpp
|
6
6
|
```cpp
|
7
7
|
#include <iostream>
|
8
8
|
|
@@ -47,17 +47,18 @@
|
|
47
47
|
|
48
48
|
// メンバ変数出力
|
49
49
|
void Print() {
|
50
|
-
cout << "
|
50
|
+
cout << "x_:" << x_ << endl;
|
51
|
-
cout << "
|
51
|
+
cout << "y_:" << y_ << endl;
|
52
|
-
cout << "
|
52
|
+
cout << "z_:" << z_ << endl;
|
53
|
-
cout << "
|
53
|
+
cout << "g_:" << g_ << endl;
|
54
|
-
cout << "
|
54
|
+
cout << "f_:" << f_ << endl;
|
55
|
-
cout << "
|
55
|
+
cout << "h_:" << h_ << endl;
|
56
56
|
}
|
57
57
|
};
|
58
58
|
|
59
59
|
A CreateA(bool flag)
|
60
60
|
{
|
61
|
+
#if 1
|
61
62
|
A a(1.5, 2.5, 3.5);
|
62
63
|
|
63
64
|
a.g_ = 4;
|
@@ -68,7 +69,7 @@
|
|
68
69
|
if(flag) {
|
69
70
|
return a;
|
70
71
|
}
|
71
|
-
|
72
|
+
#endif
|
72
73
|
A a2(7.5, 8.5, 9.5);
|
73
74
|
a2.g_ = 10.0;
|
74
75
|
a2.f_ = 11.0;
|
@@ -79,14 +80,13 @@
|
|
79
80
|
|
80
81
|
int main()
|
81
82
|
{
|
82
|
-
// Aの一時オブジェクトを作ってAのムーブコンストラクタを呼び出してインスタンス
|
83
|
+
// Aの一時オブジェクトを作ってAのムーブコンストラクタを呼び出してインスタンスaを初期化
|
83
84
|
A a3 = CreateA(true);
|
84
85
|
|
85
86
|
a3.Print();
|
86
87
|
|
87
88
|
return 0;
|
88
89
|
}
|
89
|
-
|
90
90
|
```
|
91
91
|
|
92
92
|
ビルド
|
@@ -98,11 +98,11 @@
|
|
98
98
|
```
|
99
99
|
A::A()
|
100
100
|
A::~A()
|
101
|
-
|
101
|
+
x_:1.5
|
102
|
-
|
102
|
+
y_:2.5
|
103
|
-
|
103
|
+
z_:3.5
|
104
|
-
|
104
|
+
g_:4
|
105
|
-
|
105
|
+
f_:5
|
106
|
-
|
106
|
+
h_:6
|
107
107
|
A::~A()
|
108
108
|
```
|