Exemplo artificial, por causa da questão:
void MyClass::MyFunction( int x ) const
{
std::cout << m_map[x] << std::endl
}
Isso não será compilado, pois o operador [] não é constante.
Isso é lamentável, pois a sintaxe [] parece muito limpa. Em vez disso, tenho que fazer algo assim:
void MyClass::MyFunction( int x ) const
{
MyMap iter = m_map.find(x);
std::cout << iter->second << std::endl
}
Isso sempre me incomodou. Por que o operador [] não é constante?
operator[]
render se o elemento dado não existir?