将调用哪个重载版本的运算符

时间:2010-01-25 19:22:16

标签: c++ operator-overloading const

假设我已在类

中声明了下标运算符
  1. char& operator[] (int index);
  2. const char operator[](int index) const;
  3. 在什么条件下调用第二个重载。它是否只通过const object调用。

    在以下场景中将调用哪个版本的运算符。

    const char res1 = nonConstObject[10]; 
    nonConstObject[10];
    

2 个答案:

答案 0 :(得分:13)

第一个叫。不要对返回值感到困惑;只考虑参数来选择方法。在这种情况下,隐式this是非const的,因此调用非const版本。

答案 1 :(得分:-1)

常量方法只能从常量实例中调用。由于nonConstObject未定义为const,因此两个调用都将是非const重载运算符。