Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Операторы отношений (например, "==" или "<") также можно перегружать, причем сделать это совсем нетрудно. Как правило, перегруженный оператор отношения возвращает одно из двух возможных значений: true или false. Это позволяет использовать перегруженные операторы отношений в условных выражениях. Если бы они воз-
вращали результат другого типа, это бы весьма ограничило круг их применения.
Рассмотрим версию класса ThreeD, который перегружает операторы "<" и ">".
// Перегрузка операторов "<" и ">".
using System;
// Класс трехмерных координат,
class ThreeD
{
int x, у, z; // 3-х-мерные координаты.
public ThreeD () { х = у = z = 0; }
public ThreeD(int i, int j, int k) {
x = i; у = j; z = k;
}
// Перегрузка оператора "<".
public static bool operator <(ThreeD opl, ThreeD op2)
{
if((opl.x < op2.x) && (opl.у < op2.y) &&
(opl.z < op2.z))
return true;
else
return false;
}
// Перегрузка оператора ">".
public static bool operator >(ThreeD opl, ThreeD op2)
{
if((opl.x > op2.x) && (opl.у > op2.y) &&
(opl.z > op2.z))
return true;
else
return false;
}
// Отображаем координаты X, Y, Z.
public void show()
{
Console.WriteLine(x + ", " + у + ", " + z);
}
class ThreeDDemo
{
public static void Main() {
ThreeD a = new ThreeD(5, 6, 7);
ThreeD b = new ThreeD(10, 10, 10);
ThreeD с = new ThreeD(1, 2, 3);
Console.Write("Координаты точки а: ");
a.show();
Console.Write("Координаты точки b: ");
b.show();
Console.Write("Координаты точки с: ");
с.show();
Console.WriteLine();
if(a > c) Console.WriteLine("a > с - ИСТИНА")
if(a < c) Console.WriteLine("a < с - ИСТИНА")
if(a > b) Console.WriteLine("a > b - ИСТИНА")
if(a < b) Console.WriteLine("a < b - ИСТИНА")
Console.ReadLine();
}
}
При выполнении эта программа генерирует такие результаты:
Координаты точки а: 5, 6, 7
Координаты точки b: 10, 10, 10
Координаты точки с: 1, 2, 3
а > с - ИСТИНА
а < b - ИСТИНА
На перегрузку операторов отношений налагается серьезное ограничение: их следует перегружать парами. Например, перегружая оператор "<", вы также должны перегрузить оператор ">", и наоборот.
Дата публикования: 2015-06-12; Прочитано: 269 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!