NoS*_*tAl 6 c++ move-semantics
如果我的内部类是我自己的版本vector<char>(我控制源)并且为了示例我不能改变它std::string是否有一种方法来窃取内存std::string,就像移动构造函数std::string一样.
所以像这样:
std::string str{"abcdefghijklmnopqrstu"};
MyVectorCharClass mvc(std::move(str)); // Constructor takes memory from str
Run Code Online (Sandbox Code Playgroud)
我想我听到的一些建议,未来要添加.release()到std::string或std::vector,但我说的是现在.
不.std::string管理的缓冲区是私有的.您可以通过它访问它&str[0],但string仍然拥有它并在超出范围时将其销毁.你无法告诉str它现在拥有一个不同的缓冲区,或者设置它的底层缓冲区nullptr,或任何其他方式使它不是 delete那个缓冲区.
那std::string是工作.它拥有缓冲区并且它不会放弃它.
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |