C++   ::   Хилл Мюррей

Страница: 219 из 357

Кроме того, выражения вчлене могут быть заметно короче выражений в друге. В функции друге надо использовать явный параметр, тогда как в члене можно использовать неявный this. Если только не применяется перегрузка, имена членов

обычно короче имен друзей.



6.11 Предостережение

Как и большую часть возможностей в языках программировния, перегрузку операций можно использовать как правильно, так и неправильно. В частности, можно так воспользоваться возможностью определять новые значения старых операций, что они станут почти совсем непостижимы. Представьте, например, с какими сложностями столкнется человек, читающий программу, в которой операция + была переопределена для обозначения вычтания.

Изложенный аппарат должен уберечь программиста/читателя от худших крайностей применения перегрузки, потому что прораммист предохранен от изменения значения операций для осноных типов данных вроде int, а также потому, что синтаксис вражений и приоритеты операций сохраняются.

Может быть, разумно применять перегрузку операций главным образом так, чтобы подражать общепринятому применению операций. В тех случаях, когда нет общепринятой операции или имеющееся в С++ множество операций не подходит для имитации общепринятого применения, можно использовать запись вызова функции.



6.12 Упражнения

1. (*2) Определите итератор для класса string. Определите операцию конкатенации + и операцию «добавить в конец» +=.

|< Пред. 217 218 219 220 221 След. >|

Java книги

Контакты: [email protected]