Академический Документы
Профессиональный Документы
Культура Документы
ОТЧЁТ
О ВЫПОЛНЕНИИ ЛАБОРАТОРНОЙ РАБОТЫ
по предмету ООП
Проверил Митителу В.
Кишинев,2023
ЛАБОРАТОРНАЯ РАБОТА №3
Тема: Перегрузка операторов
Цели работы:
● изучение необходимости перегрузки операторов;
● изучение синтаксиса определения операторов;
● изучение типов операторов;
● изучение форм перегрузки;
Вариант 8
#include <iostream>
class Complex {
private:
double real;
double imaginary;
public:
Complex(double real = 0.0, double imaginary = 0.0)
: real(real), imaginary(imaginary) {}
int main() {
Complex a(3.0, 4.0);
Complex b(1.0, 2.0);
return 0;
}
#include <iostream>
#include <cmath> // Включаем заголовок для sqrt
class Stack {
private:
int* elements; // Динамический массив для хранения элементов стекаs
int size; // Текущий размер стека
int capacity; //Максимальная емкость стека
public:
// Конструктор
Stack(int initialCapacity = 10) {
capacity = initialCapacity;
size = 0;
elements = new int[capacity];
}
// Деструктор
~Stack() {
delete[] elements;
}
// Операторы ввода/вывода
friend std::ostream& operator<<(std::ostream& os, const Stack& stack) {
for (int i = 0; i < stack.size; i++) {
os << stack.elements[i] << " ";
}
return os;
}
private:
// Вспомогательная функция для вычисления нормы элементов стека
int calculateNorm() const {
int norm = 0;
for (int i = 0; i < size; i++) {
norm += elements[i] * elements[i];
}
return norm;
}
};
int main() {
Stack stack1(5);
stack1.push(1);
stack1.push(2);
stack1.push(3);
Stack stack2(3);
stack2.push(4);
stack2.push(5);
if (stack1 == stack2) {
std::cout << "Stack 1 is equal to Stack 2" << std::endl;
} else {
std::cout << "Stack 1 is not equal to Stack 2" << std::endl;
}
return 0;
}