[英]C++ overload map [ ] operator
我有2个重载的运算符声明,需要帮助您理解。
template<class KEY, class T>
const T& Map<KEY, T>::operator [](const KEY& key) const { }
和
template<class KEY, class T>
T& Map<KEY, T>::operator [](const KEY& key) { }
第一个[]
用于访问值/返回值,即std::cout<<m["x"]<<std::endl;
第二个[]
用于赋值,即m["x"] = 1;
我的问题与第二[]
。 如果我要执行m["z"] = 10
,那么如何存储10
作为与键z
关联的值? 查看函数声明,我只看到键,而不是值。
我试着做m_value = T();
,但我不确定T()是什么。
谢谢
该函数返回一个引用:
template<class KEY, class T>
T& Map<KEY, T>::operator [](const KEY& key) { }
^ that means "reference"
这将是对存储在地图中的对象的引用。 分配给参考将分配给该对象。
区别在于const。 从理论上讲,您也可以将2nd用于输出(并且可能会这样做,因为它们基本上是具有相同参数的相同功能。但这不是您的问题:)
您的第二个[[]]所要做的就是让您访问存储在“ z”处的项目,使用“ =”运算符完成了赋值,此处未显示为重载。
因此,使用第二个“ []”运算符作为访问方法,使用标准版本的“ =”运算符来存储10。
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.