dba*_*dba 15 c++ move-semantics
我想知道通过使用移动赋值运算符来编写reset某个类的方法是否安全。Athis
所以而不是
A a{};
... // Do something with a
a = A();
Run Code Online (Sandbox Code Playgroud)
如果我能写
A a{};
... // Do something with a
a.reset();
Run Code Online (Sandbox Code Playgroud)
在哪里
void A::reset()
{
*this = A();
}
Run Code Online (Sandbox Code Playgroud)
我在 godbolt ( https://godbolt.org/z/Edc3TT1aT )上玩了一下,生成的调试程序集与本示例中的 gdb 几乎相同。
一般来说,赋值给*this是不会错的。既不复制也不移动。
它是否正确取决于您的移动赋值运算符的作用以及您需要该reset函数执行的操作。如果作业做了正确的事情,那么它就是正确的。
| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |