Глава 16. Перегрузка операций 391
Знак операции Назначение
Операция доступа к элементу класса
# * Операция доступа к указателю
: : Операция разрешения области видимости
?: Трехместная условная операция
sizeof Размер объекта (sizeof(x)/sizeof (х[0])) возвращает число элементов в массиве х
# Препроцессорное преобразование строк; а также предшествует директивам препроцессора include, define, endif и т. п.
## Препроцессорная конкатенация строк
Операции преобразования
Выше мы рассмотрели, какие операции могут быть перегружены, а какие не могут. Существуют и другие типы функций, использующие ключевое слово operator — это операции преобразования типов. Операции преобразования (conversion operators) позволяют преобразовать объект одного типа в объект другого типа.
Рассмотрим тривиальный класс INT из предыдущего примера. Предположим, что вместо перегрузки operators- вы определили операцию преобразования int по следующему алгоритму. Если требуется int, а используется INT, то вернуть элемент int класса INT.
То есть
INT а (5) , Ь(6) ;
INT с = а + Ь;
будет похоже на
INT с;
с.data = a.data + b.data;
Вы можете возразить, что того же эффекта можно достичь, объявив элемент data открытым; но это только на первый взгляд. В действительности (считая, что преобразование из INT в int уже определено) имеет место следующее:
INT с = a.operator intО + Ь.operator int О;
Разница в том, что сделав свои данные открытыми (public), вы утрачиваете контроль над ними. Любой пользователь имеет к ним доступ, что нарушает