为什么C++的vector类调用copy构造函数?为什么不只是记忆基础数据?这不是更快,并删除移动语义的一半需求?
我无法想象这会更糟糕的用例,但话又说回来,也许只是因为我很缺乏想象力.
Bil*_*eal 13
因为需要通知对象它正被移动.例如,可能存在指向需要修复的给定对象的指针,因为正在复制对象.或者可能需要更新引用计数智能指针的引用计数.要么....
如果你只是记忆了底层内存,那么你最终会在同一个对象上调用两次析构函数,这也很糟糕.如果析构函数控制类似OS文件句柄的内容怎么办?
编辑:总结以上内容:复制构造函数和析构函数可能有副作用.这些副作用需要保留.