相关疑难解决方法(0)

什么是移动语义?

我刚刚听完了Scott Meyers关于C++ 0x的软件工程电台播客采访.大多数新功能对我来说都很有意义,我现在对C++ 0x感到兴奋,除了一个.我仍然没有得到移动语义 ......它们究竟是什么?

c++ c++-faq move-semantics c++11

1614
推荐指数
11
解决办法
39万
查看次数

右值函数重载

我想重载一个函数,以便它以某种方式操作它的参数,然后返回对参数的引用 - 但如果参数不可变,那么它应该返回参数的操纵副本.经过多年的讨论,这就是我想出来的.

using namespace std;

string& foo(string &in)
{
    in.insert(0, "hello ");
    return in;
}

string foo(string &&in)
{
    return move(foo(in));
}

string foo(const string& in)
{
    return foo(string(in));
}
Run Code Online (Sandbox Code Playgroud)

这段代码似乎工作正常,但我很想知道是否有人能想到更好的方法来做到这一点.

这是一个测试程序:

int main(void)
{
    string var = "world";
    const string var2 = "const world";
    cout << foo(var) << endl;
    cout << var << endl;

    cout << foo(var2) << endl;
    cout << var2 << endl;

    cout << foo(var + " and " + var2) << endl;
    return …
Run Code Online (Sandbox Code Playgroud)

c++ rvalue-reference c++11

5
推荐指数
1
解决办法
2149
查看次数

标签 统计

c++ ×2

c++11 ×2

c++-faq ×1

move-semantics ×1

rvalue-reference ×1