Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //заголовочный файл
- #include <iostream>
- using namespace std;
- class Complex {
- private://приватные поля класса, которые доступны только внутри этого класса
- double re;
- double im;
- public://публичные поля класса, которые доступны вне этого класса
- Complex() {} //конструктор по умолчанию
- Complex(double r, double i) { re = r, im = i; } //конструктор преобразования
- Complex(Complex &a) : re(a.re), im(a.im) {} //конструктор копирования
- ~Complex() {}//деструктор
- Complex operator+(Complex z1);//перегрузка оператора сложения
- Complex operator-(Complex z1);//перегрузка оператора вычитания
- Complex operator*(Complex z1);//перегрузка оператора умножения
- //аксессоры приватных полей
- double GetReal() {
- return re;
- }
- double GetImage() {
- return im;
- }
- //создаются дружественные функции для доступа к приватным и протектед полям этого класса
- friend ostream& operator << (ostream &fo, Complex &fp);//перегрузка оператора вывода
- };
- //////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////
- //cpp файл
- #include <iostream>
- #include "complex.h"
- using namespace std;
- // метод перегрузка оператора+
- Complex Complex::operator+(Complex z1)
- {
- //вычитание по правилам комплексных чисел
- z1.re = re + z1.re;
- z1.im = im + z1.im;
- return z1;
- }
- // метод перегрузка оператора-
- Complex Complex::operator-(Complex z1)
- {
- //вычитание по правилам комплексных чисел
- z1.re = re - z1.re;
- z1.im = im - z1.im;
- return z1;
- }
- // метод перегрузка оператора*
- Complex Complex::operator*(Complex z1)
- {
- //умножение по правилам комплексных чисел
- double k, j;
- k = re * z1.re - im * z1.im;
- j = re * z1.im + z1.re * im;
- z1.re = k;
- z1.im = j;
- return z1;
- }
- // метод перегрузка оператора вывода
- ostream &operator<< (ostream &fo, Complex &fp)
- {
- //cout стал параметром fo в нашей функции перегрузки,
- //который станет ссылкой на cout при вызове этого оператора
- if (fp.im < 0) fo << fp.re << "+i(" << fp.im << ")\n";
- else fo << fp.re << "+i" << fp.im << "\n";
- return fo;
- }
- //////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////
- //main
- #include <iostream>
- #include "complex.h"
- using namespace std;
- int main()
- {
- setlocale(LC_ALL, "rus");
- Complex c1;
- Complex c2(3, 4);//используется конструктор преобразования
- Complex c3(c2);//используется констуктор копирования
- cout << "c1 + c2 = " << (c1 + c3);
- cout << "c2 - c1 = " << (c2 - c1);
- cout << "c1 * c3 = " << (c1 * c3);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement