关于重载赋值运算符的困惑
Confusion about overloading assignment operator
假设有一个名为 Vector 的类,我想重载赋值运算符,使其能够像这样工作:a = b = c;(a,b,v 是向量类的对象)
但有一件事让我感到困惑。假设有两个原型:
Vector & operator=(const Vector & v);
const Vector & operator=(const Vector & v);
两者都在'a=b=c'的情况下工作。那么,哪一个更好或正确?
对于初学者来说,将您的类命名为"Vector"可能会导致频繁的混淆和混淆,std::vector
.你应该选择一个更好的名字。不幸的是,"阵列"现在也被占用了...
第一个是标准赋值运算符。当然,赋值运算符只为可变类实例定义,因此它应该返回对可变类实例的引用。
有趣的是,我个人会选择第一个,原因是第二个,在结果上强迫恒定。这可能是你不想要的东西,如果你愿意,你也可以在外部强制执行恒常性,通过使用 const 等从外部函数返回。至少您可以手动修改矢量分量。
相关文章:
- 使用赋值运算符重载从类中返回jobject
- 赋值运算符重载和自赋值
- C++ 指针赋值运算符重载(不仅是对象赋值,还有指针赋值)
- 赋值运算符重载在通过指针访问时不调用
- "return *this"赋值运算符重载
- 赋值运算符重载 c++ 的返回值
- 在对类对象的赋值进行链接时获取垃圾值,使用按值返回类对象的赋值运算符重载
- 在c++中的赋值运算符重载方法中删除旧的动态分配内存
- 复合赋值运算符重载
- 对象的动态内存和赋值运算符重载
- c++中的赋值运算符重载
- c++赋值运算符重载
- 如何通过赋值运算符重载将一个列表复制到另一个列表上?C++
- 赋值运算符重载和无效内存
- 赋值运算符重载 -- 错误 C2440:'==':无法从 'A<T> *' 转换为 'A<T> *const '
- 为什么内存泄漏只发生在赋值运算符重载的情况下,而不是在复制构造函数中,以及复制和交换习惯用法如何解决它
- 内存泄漏,使赋值运算符重载、新建、删除和C++
- C++中的效率和赋值运算符重载
- 赋值运算符重载/检索功能
- 为什么在赋值运算符重载中返回引用