Некоторые ключевые ограничения при перегрузке операторов в C++:
- Существующие операторы. 5 Перегрузить можно только те операторы, которые уже определены в C++. 4 Создать совершенно новые операторы нельзя. 5
- Количество операндов. 5 Нельзя изменить количество операндов, требуемых оператором. 5 Например, унарный оператор (например,
!
) всегда будет принимать один операнд, а бинарный (например, +
) — два. 5 - Ассоциативность и приоритет. 5 Ассоциативность (порядок выполнения операций слева направо или справа налево) и приоритет операторов (какой оператор выполняется раньше) также не могут быть изменены. 5 Это гарантирует, что порядок вычислений остаётся предсказуемым и соответствует стандартным правилам C++. 5
Кроме того, нельзя перегружать такие операторы, как тернарный оператор ?:
, оператор доступа к области видимости ::
, операторы доступа к членам .
и .*
, sizeof
, typeid
и операторы приведения типов. 5