我有2重載運算符聲明,我需要幫助理解。C++過載映射[]運算符
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()是什麼。
謝謝
你問m [「z」] = 10如何在幕後工作? – 2015-03-03 11:00:20
當'm'不是const時,'std :: cout << m [「x」] << std :: endl;'使用非const(2nd)版本。 – alain 2015-03-03 11:05:40
第二個(你稱之爲「用於賦值」)的運算符只能應用於非常量Map對象。結果是對值類型T的非常量引用。 在此非常量T上,現在可以應用T :: operator =(const T&tparm):這意味着T的賦值運算符用於將tparm分配給T&你從第二個操作員處獲得。 – 2015-03-03 11:14:13