gpt4 book ai didi

c++ - 移动语义如何在后台工作

转载 作者:行者123 更新时间:2023-11-28 06:05:51 26 4
gpt4 key购买 nike

<分区>

这是例子..!!你能解释一下它是如何工作的吗?为什么只破坏一次?

#include <iostream>
using namespace std;
class A {
public:
A() {
cout << "A's Construct" << endl;
}
~A() {
cout << "A's Destructr" << endl;
}
A(const A& obj) {
cout << "A's Copy Constructor" << endl;
}
};
A fun() {
A obj;
cout << "Fun" << endl;
return obj;
}
int main() {
A obj = fun();
cout << "End" << endl;
return 0;
}

当我运行上面的程序时,输出是:

A's Construct
Fun
End
A's Destructor

但是当我从上面的代码中删除复制构造函数时,输出是:

A's Construct
Fun
A's Destructor
End
A's Destructr

我期待函数的 obj 和 main 的 obj 的 2 个析构函数和 A obj=fun(); 的 1 次复制构造函数和函数对象的一次简单构造函数。

期望输出:

A's Construct
Fun
A's Destructor
A's Copy Constructor
End
A's Destructr

你能解释一下区别吗?我知道有 Move 语义或 RVO,但我对它们在此代码中的表现感到困惑?

在 Visual Studio 2015 中编译。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com