|
Множественные перегрузки оператора [] Оператор [] может иметь и несколько вариантов перегрузки для данного класса при условии, что сигнатуры остаются уникальными. Например, одна версия может получать аргумент типа int, а другая - аргумент char*, который преобразуется к int функцией atoi(). Скорее всего, ваша коллекция может индексироваться несколькими способами. class StringArray { public: const String& operator[](int index); int operator[](const String&); }; String str = array[17]; // Первая форма int index = array[String("Hello")]; // Вторая форма Первый оператор [] реализует семантику массива: по целому индексу возвращается значение элемента с этим индексом. Второй оператор обеспечивает обратную возможность: по значению находится соответствующий индекс массива. В этой схеме используется пара допущений (например, уникальное целое, которое возвращается в качестве индекса несуществующего значения), но в целом идея вполне понятна. |
Copyright 2005. Климов Александр. All Right Reserved.