Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
2.57 Кб
Скачать
#include <iostream>
#include <locale>
#include <string>
using namespace std;

class fridge {
    string color;
    int length, width, height;
    
public:
    // Конструкторы
    fridge(string c, int l, int w, int h) : color(c), length(l), width(w), height(h) {}
    
    fridge(int size) : color("белый"), length(size), width(size), height(size) {}
    
    // Оператор ++ (постфиксный)
    fridge operator++(int) {
        fridge temp = *this;
        length++;
        width++;
        height++;
        return temp;
    }
    
    // Оператор ++ (префиксный)
    fridge& operator++() {
        length++;
        width++;
        height++;
        return *this;
    }
    
    // Оператор сложения
    friend fridge operator+(const fridge& f1, const fridge& f2);
    
    // Оператор вывода
    friend ostream& operator<<(ostream& os, const fridge& f);
    
    // Оператор сложения с числом слева
    friend fridge operator+(int n, const fridge& f);
    
    // Оператор индексации
    int& operator[](int index) {
        switch(index) {
            case 0: return length;
            case 1: return width;
            case 2: return height;
            default: return length;
        }
    }
    
    const int& operator[](int index) const {
        switch(index) {
            case 0: return length;
            case 1: return width;
            case 2: return height;
            default: return length;
        }
    }
};

fridge operator+(const fridge& f1, const fridge& f2) {
    return fridge("смешанный", 
                  f1.length + f2.length,
                  f1.width + f2.width,
                  f1.height + f2.height);
}

fridge operator+(int n, const fridge& f) {
    return fridge("смешанный", 
                  n + f.length,
                  n + f.width,
                  n + f.height);
}

ostream& operator<<(ostream& os, const fridge& f) {
    os << "Холодильник " << f.color << " " 
       << f.length << "x" << f.width << "x" << f.height << endl;
    return os;
}

int main() {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    
    fridge R("синий", 7, 1, 12);
    fridge G(7);
    fridge Res = R++;
    
    cout << Res << R << G;
    
    Res = G + R;
    Res = 4 + G;
    
    cout << Res << R << G;
    
    Res[1] = Res[2] + 10;
    cout << Res << R << ++G;
    
    return 0;
}
Соседние файлы в папке Лаба4