假设有一个名为Vector的类,我想重载它的赋值运算符,使它能够像这样工作: a = b = c;(a,b,v是Vector类的对象)
但有一件事困扰我。 假设有两个原型:
Vector & operator=(const Vector & v);
const Vector & operator=(const Vector & v);
两者都适用于' a = b = c'的情况。 那么,哪一个更好还是更好?
答案 0 :(得分:3)
对于初学者来说,命名你的班级“Vector”可能会导致频繁的混淆和混淆,std::vector
。你应该选择一个更好的名字。不幸的是,“阵列”现在也被采用......
第一个是标准赋值运算符。当然,赋值运算符只是为可变类实例定义的,所以它应该返回对可变类实例的引用。
答案 1 :(得分:1)
有趣的是,我个人会选择第一个,原因是第二个,就是强制结果的常数。这可能是你不想要的东西,你可以通过外部函数返回const等来从外部强制执行const。 至少您可以手动手动修改矢量组件。