小编tep*_*ndr的帖子

为什么右值按值传递给函数时不被复制?

我有以下代码:

struct Foo {
    Foo() = default;
    Foo(const Foo&) { std::cout << "Copy" << std::endl; }
    Foo(Foo&&) noexcept { std::cout << "Move" << std::endl; }
};

struct Bar {
    Bar(Foo foo) : foo(std::move(foo)) {}
    Foo foo;
};

int main() {
    Foo foo;
    std::cout << "Pass l-value:" << std::endl;
    Bar barL(foo);
    std::cout << "Pass r-value:" << std::endl;
    Bar barR({});
}
Run Code Online (Sandbox Code Playgroud)

它打印以下内容:

Pass l-value:
Copy
Move
Pass r-value:
Move
Run Code Online (Sandbox Code Playgroud)

编译器如何理解它不能复制右值?

c++

0
推荐指数
1
解决办法
306
查看次数

标签 统计

c++ ×1