问个关于重载操作符的问题?请进!

geniuscaobo geniuscaobo 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区


我用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关键字(重载操作符)的用法详解

操作符重载使得用户定义的类型可以像基本数据类型一样进行算术、比较和其他操作,提升了代码的可读性和易用性。### 为什么使用操作符重载?操作符重载的主要目的是为了增加类的表达力和方便性。

weixin_38535364

实现操作符重载 实现操作符重载

重载赋值运算符(`=`)时,通常需要考虑深拷贝和浅拷贝的问题,以防止意外的副作用,也称为“复制语义”。5. 对于复合赋值运算符(如`+=`、`*=`等),应确保返回的是左操作数的引用,以便链式操作。

cst_wenyue

详解C++赋值操作符重载

"C++赋值操作符重载的原理与注意事项"C++中的赋值操作符`=`是我们编程中常用的一个符号,它用于将值从右边的表达式复制到左边的变量。然而,在某些特定场景下,特别是涉及到自定义类型(如类或结构体

weixin_38657353

C++输入输出操作符重载的深入分析

在C++编程语言中,操作符重载是一种强大的特性,允许程序员为自定义类型赋予新的操作符含义。本文将深入探讨C++中的输入输出操作符重载,这对于理解和使用自定义类型进行I/O操作至关重要。

weixin_38604653

C++ 操作符重载

本主题将深入探讨操作符重载的概念、语法以及如何在实践中应用。一、操作符重载的基本原理操作符重载并不创建新的操作符,而是让一个操作符可以处理不同类型的操作数或者执行不同的操作。

DALIANNIHAO
评论 7
收藏 已收藏
分享
返回顶部
geniuscaobo
C++ 语言 65,214 成员 250,514 内容