问个关于重载操作符的问题?请进!
我用CArray,里面的元素是包含一个结构体。当我想改变数组中的某一个位置中结构中的值时。
arr[i] = st; 结果一看MFC中的代码时。
template<class TYPE, class ARG_TYPE>
class CArray : public CObject
{
public:
// overloaded operator helpers
TYPE operator[](int nIndex) const;
TYPE& operator[](int nIndex);
}
template<class TYPE, class ARG_TYPE>
AFX_INLINE TYPE CArray<TYPE, ARG_TYPE>::operator[](int nIndex) const
{ return GetAt(nIndex); }
template<class TYPE, class ARG_TYPE>
AFX_INLINE TYPE& CArray<TYPE, ARG_TYPE>::operator[](int nIndex)
{ return ElementAt(nIndex); }
傻眼了。重载操作符有两个,一个返回引用,一个返回值。 这两个函数分别在什么时候调用?
万一调用第一个,那赋值就不成功了。 谁能解释一下区别和用法。
...全文
相关推荐
C++ operator关键字(重载操作符)的用法详解
操作符重载使得用户定义的类型可以像基本数据类型一样进行算术、比较和其他操作,提升了代码的可读性和易用性。### 为什么使用操作符重载?操作符重载的主要目的是为了增加类的表达力和方便性。
实现操作符重载 实现操作符重载
重载赋值运算符(`=`)时,通常需要考虑深拷贝和浅拷贝的问题,以防止意外的副作用,也称为“复制语义”。5. 对于复合赋值运算符(如`+=`、`*=`等),应确保返回的是左操作数的引用,以便链式操作。
详解C++赋值操作符重载
"C++赋值操作符重载的原理与注意事项"C++中的赋值操作符`=`是我们编程中常用的一个符号,它用于将值从右边的表达式复制到左边的变量。然而,在某些特定场景下,特别是涉及到自定义类型(如类或结构体
C++输入输出操作符重载的深入分析
在C++编程语言中,操作符重载是一种强大的特性,允许程序员为自定义类型赋予新的操作符含义。本文将深入探讨C++中的输入输出操作符重载,这对于理解和使用自定义类型进行I/O操作至关重要。
C++ 操作符重载
本主题将深入探讨操作符重载的概念、语法以及如何在实践中应用。一、操作符重载的基本原理操作符重载并不创建新的操作符,而是让一个操作符可以处理不同类型的操作数或者执行不同的操作。


