在这里,您可以看到带有自赋值检查的复制赋值运算符实现:
String & operator=(const String & s)
{
if (this != &s)
{
String(s).swap(*this); //Copy-constructor and non-throwing swap
}
// Old resources are released with the destruction of the temporary above
return *this;
}
这对自我分配有好处,但对性能不利:
- 就像每次检查 if 语句时一样(考虑到分支预测,我不知道它会优化多少)
- 我们也在这里丢失了右值参数的复制省略
所以我仍然不明白我是否会实施std::vector
'operator=
我将如何实施它。