Перегрузка операций сравнения
Перегрузка операций сравнения
Из материала главы 7 вы узнали о том, как реализовать интерфейс IComparable, чтобы иметь возможность сравнения подобных объектов. В дополнение к этому для того же класса вы можете использовать перегрузку операций сравнения (‹, ›, ‹= и ›=). Подобно операциям проверки на тождественность, в C# требуется, чтобы при перегрузке ‹ выполнялась и перегрузка ›. Это же касается и операций ‹= и ›=. Если тип Point использует перегрузку операций сравнения, пользователь объекта получает возможность сравнивать объекты Point так, как показано ниже.
// Использование перегруженных операций ‹ и ›.
static void Main(string[] args) {
…
Console.WriteLine("ptOne ‹ ptTwo: {0}", ptOne ‹ ptTwo);
Console.WriteLine("ptOne › ptTwo: {0}", ptOne › ptTwo);
}
В предположении о том, что интерфейс IComparable реализован, перегрузка операций сравнения оказывается тривиальной. Вот как может выглядеть обновленное определение класса.
// Можно сравнивать объекты Point с помощью операций сравнения.
public struct Point: IComparable {
…
public int CompareTo(object obj) {
if (obj is Point) {
Point p = (Point)obj;
if (this.x › p.x && this.y › p.y) return 1;
if (this.x ‹ p.x && this.y ‹ p.y) return -1;
else return 0;
} else throw new ArgumentException();
}
public static bool operator‹(Point p1, Point p2) { return(p1.CompareTo(р2) ‹ 0); }
public static bool operator›(Point p1, Point p2) { return(p1.CompareTo(p2) › 0); }
public static bool operator‹=(Point p1, Point p2) { return(p1.CompareTo(p2) ‹= 0); }
public statiс bool operator›=(Point p1, Point p2) { return(p1.CompareTo(p2) ›= 0); }
}
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Перегрузка операторов
Перегрузка операторов С++ позволяет нам перегружать функции, т.е. мы можем объявлять несколько функций с одним именем в одной и той же области видимости, если они имеют различные списки параметров. Кроме того, С++ поддерживает перегрузку операторов, позволяя назначать
36. Перегрузка операций
36. Перегрузка операций Часто программы имеют дело с объектами, которые являются представлениями абстрактных понятий. К примеру, тип данных int в C++ вместе с операциями +, —, *, / и т. д. является реализацией математического понятия целых чисел. Подобные понятия чаще всего
R.13 Перегрузка
R.13 Перегрузка Говорят, что имя перегружено, если для него задано несколько различных описаний функций в одной области видимости. При использовании имени выбор правильной функции производится путем сопоставления типов формальных параметров с типами фактических
Шаг 13 - Перегрузка operator+.
Шаг 13 - Перегрузка operator+. Оператор operator-› мы уже перегружали. Результаты получились просто феерические. Давайте замучаем еще кого-нибудь и посмотрим, что получится? Давайте. Первейшим кандидатом на переопределение является оператор operator+,потому что в жизни (помимо С++) он
Перегрузка методов
Перегрузка методов Подобно другим объектно-ориентированным языкам, язык C# позволяет типу перегружать его методы. Говоря простыми словами, когда класс имеет несколько членов с одинаковыми именами, отличающихся только числом (или типом) параметров, соответствующий член
Перегрузка операций
Перегрузка операций В C#, как и в любом другом языке программирования, есть свой ограниченный набор лексем, используемых для выполнения базовых операций со встроенными типами. Так, вы знаете, что операция + применима к двум целым числам и в результате дает их сумму.//
Перегрузка унарных операций
Перегрузка унарных операций В C# также позволяется перегрузка унарных операций, таких как, например, ++ и --. При перегрузке унарной операции вы тоже должны с помощью ключевого слова operator определить статический метод, но в данном случае передается только один параметр,
Перегрузка операторов
Перегрузка операторов Си++ позволяет вам легко вводить новые типы данных. Так, например, вы можете определить класс для работы с комплексными числами или числами в полярной системе координат. Естественно, что удобнее всего проводить вычисления с объектами таких классов
Глава 6 Перегрузка Операций
Глава 6 Перегрузка Операций Здесь водятся Драконы! старинная карта В этой главе описывается аппарат, предоставляемый в С++ для перегрузки операций. Программист может определять смысл операций при их применении к объектам определенного класса. Кроме арифметических,
Перегрузка имен подпрограмм
Перегрузка имен подпрограмм В одном пространстве имен может быть определено несколько процедур или функций с одним именем, но разным количеством или типами параметров. Имена таких процедур и функций называются перегруженными, а их создание - перегрузкой имен.
Перегрузка и универсальность
Перегрузка и универсальность Два технических приема - перегрузка (overloading) и универсальность (genericity) предлагают свои решения, направленные на достижение большей гибкости описанных выше механизмов. Рассмотрим, что же они могут дать.
Синтаксическая перегрузка
Синтаксическая перегрузка Перегрузка - это связывание с одним именем более одного содержания. Наиболее часто перегружаются имена переменных: почти во всех языках программирования различные по смыслу переменные могут иметь одно и то же имя, если они принадлежат