Which overloaded version of operator will be called
Suppose i have declared subscript operators in a class
char& operator[] (int index);
const char operator[](int index) const;
In what condition the second ove开发者_C百科rload is called. Is it only called through a const object
.
In the following scenarios which version of operator will be called.
const char res1 = nonConstObject[10];
nonConstObject[10];
The first one is called. Don't get confused by the return value; only the arguments are considered to select the method. In this case, the implicit this
is non-const, so the non-const version is called.
Constant methods can only be called from constant instances. Since nonConstObject isn't defined as const then both calls will be to the non-const overloaded operator.
精彩评论