为了这个问题,有人为的例子:
void MyClass::MyFunction( int x ) const
{
std::cout << m_map[x] << std::endl
}
由于[]运算符为非常量,因此无法编译。
不幸的是,因为[]语法看起来很干净。相反,我必须做这样的事情:
void MyClass::MyFunction( int x ) const
{
MyMap iter = m_map.find(x);
std::cout << iter->second << std::endl
}
这一直困扰着我。为什么[]运算符是非常量的?
operator[]
如果给定元素不存在,应该产生什么?