【发布时间】:2014-03-09 21:28:24
【问题描述】:
考虑以下代码:
class vector{
// ...
vector(int size){ /*...*/ };
vector& operator= (const vector& other){
// ...
}
};
int main(){
vector v1(5), v2(10);
v1 = v2;
}
我的operator = 应该在这里做什么? v1 没有足够的容量来存储 v2 的元素。从我的角度来看,它可以将自身重新初始化为 10 的容量并复制其他向量的元素或抛出异常。我通常选择前一种方法,但越来越经常看到后一种方法。哪一个是正确的?
【问题讨论】:
-
你在问
std::vector做什么?或者您是在就您自己的向量类中应该做什么寻求建议? -
还请注意,一个好的实现是使用复制交换习语,这意味着您的复制构造函数也必须具有这种抛出行为,并且会以可怕的方式结束。
-
@BenjaminLindley:我在问一个自定义向量类! :)
标签: c++ operators assignment-operator assign