vso*_*tco 3 c++ move-semantics c++11
有人可以解释为什么移动分配运算符(通常)声明为
Foo& operator=(Foo&&);
Run Code Online (Sandbox Code Playgroud)
为什么返回引用而不返回eg Foo或Foo&&?我理解为什么我们要对常规赋值运算符使用此方法,因为(a=b)=c如果没有通过引用返回,则关联规则在逻辑上被破坏(尽管仍然可以编译),但是为什么RHS是右值(xvalue / prvalue)时会出现这种情况?
返回Foo可能很昂贵,如果类型不可复制,则返回是不可能的。同样令人惊讶的是:当您期望两个分配都为时,(a=b)=c会创建一个临时分配c给它a。
回来Foo&&真是奇怪。您不希望事物神秘地变成右值,以便例如在您不告诉的情况下f(a=b)意外地从右移a。
Foo&如果将其链接起来,返回是使操作员表现出令人惊讶的常规方式。
| 归档时间: |
|
| 查看次数: |
342 次 |
| 最近记录: |