質問編集履歴

1

追記

2019/12/27 02:14

投稿

__ook
__ook

スコア49

test CHANGED
File without changes
test CHANGED
@@ -81,3 +81,69 @@
81
81
  moveの場合アドレスが変わらないことを想定していました(すでに認識が間違っている?)
82
82
 
83
83
  defaultではmoveの挙動にならないのでしょうか。
84
+
85
+
86
+
87
+ 【追記】
88
+
89
+ ```cpp
90
+
91
+ #include <iostream>
92
+
93
+ #include <vector>
94
+
95
+ #include <string>
96
+
97
+
98
+
99
+ using namespace std;
100
+
101
+
102
+
103
+ class X
104
+
105
+ {
106
+
107
+ public:
108
+
109
+ vector<string> s;
110
+
111
+ X() = default;
112
+
113
+ X(X&) = default;
114
+
115
+ X(X&& x) noexcept : s(move(x.s)) {};
116
+
117
+ };
118
+
119
+
120
+
121
+ int main()
122
+
123
+ {
124
+
125
+ X x1;
126
+
127
+ cout << &x1.s << endl;
128
+
129
+
130
+
131
+ X x_c1(x1);
132
+
133
+ cout << &x_c1.s << endl;
134
+
135
+
136
+
137
+ X x_m1(move(x1));
138
+
139
+ cout << &x_m1.s << endl;
140
+
141
+ }
142
+
143
+ ```
144
+
145
+
146
+
147
+ 以上のコードでもアドレスが変わるのはなぜでしょうか…
148
+
149
+ moveを定義したつもりなのですが…