#include <iostream>
#include <time.h>
class A
{
public:
A() { std::cout << "a ctor\n"; }
A(const A&) { std::cout << "a copy ctor\n"; }
A(A&&) { std::cout << "a move ctor\n"; }
};
A f(int i)
{
A a1;
return i != 0 ? a1 : A{};
}
int main()
{
srand(time(0));
f(rand());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
演员
复印机
我预计A1在F()将被移动不会被复制。如果我稍微改变f(),它就不再是一个副本而是一个移动:
A f(int i)
{
A a1;
if (i != 0)
{
return a1;
} …Run Code Online (Sandbox Code Playgroud)