operator =在不同维度的向量上

Max*_*rch 0 c++ operators assignment-operator assign

考虑以下代码:

class vector{
   // ...
   vector(int size){ /*...*/ };
   vector& operator= (const vector& other){
   // ...
   }
};

int main(){
   vector v1(5), v2(10);
   v1 = v2;
}
Run Code Online (Sandbox Code Playgroud)

operator =应该在这做什么?v1没有足够的容量存储元素v2.从我的角度来看,它可以将自身重新初始化为10的容量,并复制其他向量的元素或抛出异常.我通常选择前一种方法,但越来越多地经常看到后者.哪一个是正确的?

Ker*_* SB 5

通常,用户希望在赋值之后x = y,等式x == y应该为真:赋值赋予语义等价.做其他事情会非常不寻常和令人惊讶.这可能包括不响应"make xlike y" 指令抛出异常.