tml*_*len 7 c++ stl language-lawyer c++11
在C++ 11中std::shared_ptr有一个移动构造函数和移动赋值运算符.
有没有理由需要这样做,即如果只有复制构造函数和赋值运算符,任何使用它的程序会有不同的行为吗?
似乎它的唯一影响是避免了参考计数器的额外增量和后来的减少.
Ker*_* SB 27
复制共享指针非常昂贵,因为内部引用计数需要以原子方式修改并使用正确的内存顺序,这可能会导致总线锁和栅栏.(回想一下,多个线程可能正在复制它们自己的本地共享指针,它们拥有相同的对象.)当你真正想要将所有权从一个对象转移到另一个对象时,这些都不需要,并且移动是优越的.
| 归档时间: |
|
| 查看次数: |
841 次 |
| 最近记录: |