Как правило, класс как тип, определенный пользователем, должен содержать скрытые (private) поля и следующие функциональные элементы:
□ конструкторы, определяющие, как инициализируются объекты класса;
□ набор методов и свойств, реализующих характеристики класса;
□ классы исключений, используемые для сообщений об ошибках путем генерации исключительных ситуаций.
Классы, моделирующие математические или физические понятия, обычно также содержат набор операций, позволяющих копировать, присваивать, сравнивать объекты и производить с ними другие действия, требующиеся по сути класса.
Перегруженные операции класса должны иметь интуитивно понятный общепринятый смысл (например, не следует заставлять операцию + выполнять что-либо,
В подавляющем большинстве классов для реализации действий с объектами класса предпочтительнее использовать не операции, а методы, поскольку им можно дать осмысленные имена.
Перегруженные методы, в отличие от операций, применяются в классах повсеместно — как минимум, используется набор перегруженных конструкторов для создания объектов различными способами.
|
|
Методы с переменным числом параметров реализуются менее эффективно, чем обычные, поэтому если, к примеру, требуется передавать в метод два, три или четыре параметра, возможно, окажется более эффективным реализовать не один метод с параметром params, а три перегруженных варианта с обычными параметрами.
кроме сложения или добавления). Если какая-либо операция перегружена, следует перегрузить и аналогичные операции, например + и ++ (компилятор этого автоматически не сделает). При этом операции должны иметь ту же семантику, что и их стандартные аналоги.