C++ 移动语义测试
#include <iostream>
#include <vector>
using namespace std;
vector<string> f(){
vector<string> v;
v.push_back("123");
v.push_back("456");
v.push_back("789");
return v;
}
vector<string>& ff(){
vector<string> v;
v.push_back("123");
v.push_back("456");
v.push_back("789");
return v;
}
vector<string> fff(){
vector<string> v;
v.push_back("123");
v.push_back("456");
v.push_back("789");
// 当时一直在想,move之后,局部v析构了,那返回的对象不是数据也没法用了?
return std::move(v);
}
int main()
{
//test1
auto v = f();
for(auto s : v){
cout << s <<endl;
}
//test2 悬挂引用
// auto v2 = ff();
// for(auto s : v2){
// cout << s <<endl;
// }
//test3
auto v3 = fff();
for(auto s:v3){
cout << s <<endl;
}
}