Ví dụ có sẵn, vì lợi ích của câu hỏi:
void MyClass::MyFunction( int x ) const
{
std::cout << m_map[x] << std::endl
}
Điều này sẽ không biên dịch, vì toán tử [] không phải là const.
Điều này thật không may, vì cú pháp [] trông rất rõ ràng. Thay vào đó, tôi phải làm điều gì đó như sau:
void MyClass::MyFunction( int x ) const
{
MyMap iter = m_map.find(x);
std::cout << iter->second << std::endl
}
Điều này đã luôn luôn làm phiền tôi. Tại sao toán tử [] không phải là const?
operator[]
mang lại trong trường hợp phần tử đã cho không tồn tại?