Yua*_*Wen -1 c++ constructor destructor assignment-operator
在Scott Meyers的"Effective C++"中第26项:尽可能推迟变量定义,赋值的成本肯定不会低于构造函数 - 析构函数对.
然后,对于不同的数据类型或类,如何将赋值的成本与构造函数 - 析构函数对进行比较?哪一个会更便宜?为什么?
在我看来,构造函数 - 析构函数对需要分配和释放内存,而构造函数至少会初始化变量.但是赋值只需要改变变量的值.
所以,我认为一般来说,赋值的成本应该小于构造函数 - 析构函数对.
我想你误解了这个建议.建议说,"建筑+破坏"比"默认建筑+任务+破坏"更便宜.
在任何情况下,都不能保证作业更便宜,这取决于班级作者.并非所有构造函数都分配内存,并非所有赋值都只是"更改变量的值",某些赋值重新分配,或者对值执行非平凡的检查.此外,一些任务是在构造+破坏方面实现的,如在复制和交换习语中:
T& operator=(const T& t) {
T(t).swap(*this);
return *this;
}
Run Code Online (Sandbox Code Playgroud)
这项任务肯定不比建筑便宜,因为它建筑+交换+销毁.