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;
    }



}

image.png