Александреску Андрей
Шрифт:
46. При наличии пользовательского
Если класс определяет любую перегрузку оператора
Обычно пользовательские операторы
В С++, после того как вы определите имя в области видимости (например, в области видимости класса), все такие же имена в охватывающих областях видимости окажутся скрыты (например, в базовых классах или охватывающих пространствах имен), так что перегрузка никогда не работает через границы областей видимости. Когда речь идет об имени оператора
Пусть вы определили следующий оператор
Теперь, если кто-то попытается написать выражение с обычным стандартным
В качестве другого варианта событий предположим, что ваш класс предоставляет некоторую специфичную для данного класса версию оператора
Предпочтительно, чтобы у класса С в его область видимости были явно внесены все три стандартные версии оператора
Заметим, что вы должны всегда избегать сокрытия размещающего
Все, что осталось упомянуть, — это то, что внесение оператора
В противном случае, если не имеется базового класса или в нем не определен оператор
Рассмотренная рекомендация применима также к версиям операторов для массивов —