По последним данным, на рынке продается по крайней мере 2 768 942 книги о С++, не говоря уже о всевозможных курсах, обучающих программах, журналах и семинарах с коктейлями. И все же в этом изобилии наблюдается удручающее однообразие.
Оператор [] перегружается для аргументов любого типа, а не только для целых. Тогда оператор []можно использовать для представления словаря - коллекции, в которой один ключевой объект однозначно идентифицирует другой. Ниже приведен набросок ассоциативного класса, в котором хранятся пары строковых объектов String, при этом первая строка каждой пары является индексом второй.
class Association {
// Пропускаем подробности реализации
public:
const String& operator[](const String& key);
};
// В клиентской программе
String str = assotiation[another_string];
Такой вариант выглядит намного элегантнее и лучше выражает намерения разработчика, нежели интерфейс, построенный только на функциях класса:
Просматривать полку книг о С++ в книжном магазине ничуть не интереснее, чем литературу по бухгалтерии. В сущности, все книги пересказывают одно и то же и отличаются разве что по весу и количеству цветов в диаграммах и таблицах.