Re: В чем дело?
От: achp  
Дата: 30.05.04 15:41
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вызывается operator int().

А>Почему?

А>
А>class Test
А>{
А>public:
А>    operator int()
А>    {
А>        return 1;
А>    }
А>};

А>int main()
А>{
А>    Test test;
А>    test["test"];
А>}
А>


Компилятор пытается применить к объекту класса Test оператор []. Но "своего" такого оператора у этого класса нету. Значит нужно попробовать привести объект класса к какому-либо другому типу так, чтобы можно стало применить оператор [].

Так как у класса определен оператор приведения к типу int, рассматривается конструкция

(test.operator int())["test"];


Она является вполне легальной. Неоднозначности тоже нет — вот и применяется такая конструкция.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.