Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба4 / Laba 4 (14)
.cpp#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
