using System;
class Brick
{
public double width; // ширина
public double height; // высота
public double length; // длина
// Конструктор: позволяет создавать кирпич сразу с размерами
public Brick(double w, double h, double l)
{
width = w;
height = h;
length = l;
}
// Функция, которая считает объем (ширина * высота * длина)
public double GetVolume()
{
return width * height * length;
}
// --- ПЕРЕГРУЗКА ОПЕРАТОРОВ ---
// 1. Перегрузка плюса: складываем объемы двух кирпичей
public static double operator +(Brick b1, Brick b2)
{
return b1.GetVolume() + b2.GetVolume();
}
// 2. Перегрузка минуса: вычитаем объем второго из первого
public static double operator -(Brick b1, Brick b2)
{
return b1.GetVolume() - b2.GetVolume();
}
// 3. В C# нельзя перегрузить одиночное "=". Перегружаем "==" (равенство).
// По правилам языка C#, если мы делаем "==", нужно обязательно сделать и "!=" (не равно).
public static bool operator ==(Brick b1, Brick b2)
{
return b1.GetVolume() == b2.GetVolume();
}
public static bool operator !=(Brick b1, Brick b2)
{
return b1.GetVolume() != b2.GetVolume();
}
}
class Program
{
static void Main()
{
// Создаем первый кирпич (размеры 2, 3, 4 -> объем 24)
Brick brick1 = new Brick(2, 3, 4);
// Создаем второй кирпич (размеры 1, 2, 5 -> объем 10)
Brick brick2 = new Brick(1, 2, 5);
// Проверяем, как работают наши новые математические знаки
Console.WriteLine("Сумма объемов (+): " + (brick1 + brick2)); // Должно быть 34
Console.WriteLine("Разница объемов (-): " + (brick1 - brick2)); // Должно быть 14
// Проверяем оператор ==
if (brick1 == brick2)
{
Console.WriteLine("Кирпичи одинаковые по объему!");
}
else
{
Console.WriteLine("Кирпичи разные по объему!"); // Сработает эта строчка
}
Console.ReadLine();
}
}