Exemple artificiel, pour le bien de la question :
void MyClass::MyFunction( int x ) const
{
std::cout << m_map[x] << std::endl
}
Cela ne compilera pas, puisque l'opérateur [] est non-const.
C'est regrettable, car la syntaxe [] semble très propre. Au lieu de cela, je dois faire quelque chose comme ceci :
void MyClass::MyFunction( int x ) const
{
MyMap iter = m_map.find(x);
std::cout << iter->second << std::endl
}
Cela m'a toujours dérangé. Pourquoi l'opérateur [] est non-const ?
5 votes
Qu'est-ce qui devrait
operator[]
le rendement dans le cas où l'élément donné n'existe pas ?5 votes
@Frerich Raabe : La même chose que la fonction membre at : throw std::out_of_range