为什么C ++的向量类调用复制构造函数?为什么不仅仅存储基础数据?这样会不会快很多,并消除移动语义的一半需求?
我无法想象一个用例会变得更糟,但是话又说回来,也许只是因为我的想象力不足。
最佳答案
因为需要通知对象正在移动。例如,可能存在指向该给定对象的指针,因为该对象正在被复制,因此需要对其进行修复。否则可能需要更新引用计数的智能指针上的引用计数。要么....
如果仅存储基础内存,那么最终将在同一对象上两次调用析构函数,这也很糟糕。如果析构函数控制OS文件句柄之类的东西怎么办?
编辑:总结以上内容:
复制构造函数和析构函数可能会有副作用。这些副作用需要保留。
关于c++ - 在STL中使用memcpy,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3002163/