ตัวอย่างที่เขียนขึ้นเพื่อประโยชน์ของคำถาม:
void MyClass::MyFunction( int x ) const
{
std::cout << m_map[x] << std::endl
}
สิ่งนี้จะไม่คอมไพล์เนื่องจาก [] ตัวดำเนินการไม่ใช่ const
นี่เป็นเรื่องที่น่าเสียดายเนื่องจากไวยากรณ์ [] ดูสะอาดมาก แต่ฉันต้องทำสิ่งนี้แทน:
void MyClass::MyFunction( int x ) const
{
MyMap iter = m_map.find(x);
std::cout << iter->second << std::endl
}
สิ่งนี้ทำให้ฉันรู้สึกแย่เสมอ เหตุใดตัวดำเนินการ [] จึงไม่ใช่ const
operator[]
ให้ผลในกรณีที่ไม่มีองค์ประกอบที่กำหนด?