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

質問編集履歴

2

テスト用コードを削除

2020/02/12 15:19

投稿

nemumitakamaru
nemumitakamaru

スコア22

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
- #endif
71
+
73
72
  A a2(7.5, 8.5, 9.5);
74
73
  a2.g_ = 10.0;
75
74
  a2.f_ = 11.0;

1

ソースコードの整形等

2020/02/12 15:19

投稿

nemumitakamaru
nemumitakamaru

スコア22

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  下記の`main.cpp`の`struct A`のようにヒープ領域のメモリを確保しないメンバ変数のみ持つクラスのムーブコンストラクタはコピーコンストラクタと全く同じ処理を行い、効率性に違いはないという認識で大丈夫でしょうか?
4
4
 
5
- `main.cpp`
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 << "x:" << x_ << endl;
50
+ cout << "x_:" << x_ << endl;
51
- cout << "y:" <<y_ << endl;
51
+ cout << "y_:" << y_ << endl;
52
- cout << "z:" <<z_ << endl;
52
+ cout << "z_:" << z_ << endl;
53
- cout << "g:" <<g_ << endl;
53
+ cout << "g_:" << g_ << endl;
54
- cout << "f:" <<f_ << endl;
54
+ cout << "f_:" << f_ << endl;
55
- cout << "h:" <<h_ << endl;
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のムーブコンストラクタを呼び出してインスタンスa3を初期化
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
- x:1.5
101
+ x_:1.5
102
- y:2.5
102
+ y_:2.5
103
- z:3.5
103
+ z_:3.5
104
- g:4
104
+ g_:4
105
- f:5
105
+ f_:5
106
- h:6
106
+ h_:6
107
107
  A::~A()
108
108
  ```