gpt4 book ai didi

c++ - 在 STL 中使用 memcpy

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:08 25 4
gpt4 key购买 nike

为什么C++的vector类要调用拷贝构造函数?为什么它不只是 memcpy 底层数据?那样不是会快很多吗,并且消除一半对移动语义的需求?

我无法想象一个会更糟的用例,但话又说回来,也许这只是因为我太缺乏想象力了。

最佳答案

因为需要通知对象它正在被移动。例如,可能存在指向需要修复的给定对象的指针,因为正在复制该对象。或者可能需要更新引用计数智能指针上的引用计数。或者……

如果你只是 memcpy 底层内存,那么你最终会在同一个对象上调用两次析构函数,这也很糟糕。如果析构函数控制操作系统文件句柄之类的东西怎么办?

编辑:总结以上内容:复制构造函数和析构函数可能有副作用。这些副作用需要保留。

关于c++ - 在 STL 中使用 memcpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002163/

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