这些功能有什么区别

时间:2014-05-07 03:31:38

标签: c++ c++11

我有以下功能定义。

struct foo{
    vector<int> m_vec;
    vector<int>& getVec1()
    {
        return m_vec;
    }
    vector<int> getVec2() &
    {
        return m_vec;
    }
    vector<int>&& getVec3()
    {
        return std::move(m_vec);
    }
    vector<int> getVec4() && 
    {
        return std::move(m_vec);
    }
};  

int main()
{
    foo x;
    x.m_vec.push_back(1);
    std::cout << x.getVec1().size() << std::endl;
    x.m_vec.push_back(2);
    std::cout << x.getVec2().size() << std::endl;

    auto y = std::move(x).getVec3();
    std::cout << y.size() << std::endl;

    foo m;
    m.m_vec.push_back(1);
    auto z = std::move(m).getVec4();
    std::cout << z.size() << std::endl;

}

编译:{{1​​}}
输出:
1
2
2
1

以下是我的问题:
1.我不知道getVec2()函数定义(什么意思是引用&amp;在括号后面),是否与getVec1()相同?
2.是否与getVec3()和getVec4()函数相同?

提前致谢。

0 个答案:

没有答案